LeetCode算法题解 231-2的幂
题解:
循环判断法 递归判断法 性质法:2的幂对应的二进制数,一定有且只有一个1。
代码:
class Solution { public: bool isPowerOfTwo(int n) { /* 1. 循环解法 long long tmp = 1;// 可能num接近INT_MAX,但是tmp*2可能会超出INT_MAX。 for(int i = 0; ; i++) { if(tmp == n) { return true; } if(tmp > n) { return false; } tmp *= 2; }*/ /* 2. 递归解法 return isPowerOfFourSubFun(1,n); */ /* 3. 性质法(二的幂方的数 对应的二进制数中 一定有且只有一个1) */ int cnt = 0; while(n) { if(n % 2 == 1) { cnt++; } if(cnt > 1) { break; } n /= 2; } if(cnt == 1) { return true; } else { return false; } } /* 2. 递归解法 */ bool isPowerOfFourSubFun(long long x,int num) { if(x == num) { return true; } if(x > num) { return false; } return isPowerOfFourSubFun(x*2,num); } };
上一篇:
IDEA上Java项目控制台中文乱码