傳送門ide
Given an integer, write a function to determine if it is a power of three.函數
Follow up:
Could you do it without using any loop / recursion?oop
Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.this
Subscribe to see which companies asked this questionspa
1 class Solution { 2 public: 3 bool isPowerOfThree(int n) { 4 double ans = log(n) / log(3); 5 double ans2 = floor(ans + 0.5); 6 if(fabs(ans - ans2) < 1e-10 ){ 7 return true; 8 } 9 else{ 10 return false; 11 } 12 } 13 };
改進一下:.net
1 class Solution { 2 public: 3 bool isPowerOfThree(int n) { 4 double ans = log(n) / log(3); 5 double ans2 = round(ans); //round函數作四捨五入 6 if(fabs(ans - ans2) < 1e-10 ){ 7 return true; 8 } 9 else{ 10 return false; 11 } 12 } 13 };
看了這篇博客的思路,試了一下第三種方法code
http://blog.csdn.net/zhoudayang2/article/details/50577721blog
還有要注意邊界條件:three
1 class Solution { 2 public: 3 bool isPowerOfThree(int n) { 4 if(n < 1){ 5 return false; 6 } 7 double ans = log(n) / log(3); 8 double ans2 = round(ans); //round函數作四捨五入 9 int m = pow(3,ans2); 10 if(n == m){ 11 return true; 12 } 13 else{ 14 return false; 15 } 16 } 17 };