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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| 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:
Follow up: Could you solve it without loops/recursion?
Solution#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| class Solution {
// reset rightmost 1-bit
// 00000100 4
// 00000011 3
// 00000000 0
public boolean isPowerOfTwo(int n) {
if (n == 0) return false;
long x = (long) n;
return (x & (x - 1)) == 0;
}
// 00000100 4
// 11111011 -4
// 00000100 4 get rightmost 1-bit
public boolean isPowerOfTwo3(int n) {
if (n == 0) return false;
long x = (long) n;
return (x & (-x)) == x;
}
public boolean isPowerOfTwo2(int n) {
if (n == 0) return false;
while (n % 2 == 0) {
n /= 2;
}
return n == 1;
}
}
|