326. Power of Three
Question
Total 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 for adding this problem and creating all test cases.
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 };
看了这篇博客的思路,试了一下第三种方法
还有要注意边界条件:
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 };