231.Power of Two
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:
1 2 3
| Input: n = 1 Output: true Explanation: 20 = 1
|
Example 2:
1 2 3
| Input: n = 16 Output: true Explanation: 24 = 16
|
Example 3:
1 2
| Input: n = 3 Output: false
|
个人解答:
时间复杂度:O(logn)
空间复杂度:O(1)
1 2 3 4 5 6 7 8 9 10 11
| class Solution { public: bool isPowerOfTwo(int n) { long num = 1; while (num <= n) { if (num == n)return true; num *= 2; } return false; } };
|
位运算:
时间复杂度:O(1)
空间复杂度:O(1)
1 2 3 4 5 6
| class Solution { public: bool isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; } };
|
1 2 3 4 5 6
| class Solution { public: bool isPowerOfTwo(int n) { return n > 0 && (n & -n) == n; } };
|
约数法:
时间复杂度:O(1)
空间复杂度:O(1)
1 2 3 4 5 6 7 8
| class Solution { private: static constexpr int BIG = 1 << 30; public: bool isPowerOfTwo(int n) { return n > 0 && BIG % n == 0; } };
|