326. Power of Three
My SubmissionsTotal Accepted: 23021 Total Submissions: 64515 Difficulty: Easy
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?
Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
Show Similar Problems
题意:
给一个整数n,判断是否是3的幂
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 };
改进一下:
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 };
看了这篇博客的思路,试了一下第三种方法
http://blog.csdn.net/zhoudayang2/article/details/50577721
还有要注意边界条件:
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 };