传送门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 };