Given an integer n, return true if it is a power of two. Otherwise, return false.
An integer n is a power of two, if there exists an integer x such that n == 2x.
Example 1:
Input: n = 1
Output: true
Explanation: 20 = 1
Example 2:
Input: n = 16
Output: true
Explanation: 24 = 16
Example 3:
Input: n = 3
Output: false
Example 4:
Input: n = 4
Output: true
Example 5:
Input: n = 5
Output: false
Constraints:
-231 <= n <= 231 - 1
我的答案:
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n <= 0) return false;
while (n > 1) {
if (n%2 != 0) return false;
n = n/2;
}
return true;
}
};
Runtime: 4 ms, faster than 34.61% of C++ online submissions for Power of Two.
Memory Usage: 6.2 MB, less than 38.78% of C++ online submissions for Power of Two.
通过了,效率有点低
看答案里面有人用bitwise来做
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n<=0)
return false;
if((n & (n-1)) == 0)
return true;
else
return false;
}
};
2^n => 100000...000
2^n-1 => 011111...111
网友评论