public class Solution { public bool IsPowerOfTwo(int n) { return ((n & (n - 1)) == 0 && n > 0); } }
https://leetcode.com/problems/power-of-two/#/description
补充python的实现:
1 class Solution: 2 def isPowerOfTwo(self, n: int) -> bool: 3 return n > 0 and n & (n - 1) == 0
算法思路:位运算。
2 ^ 0 = 1,二进制表示:0000 0001,(1-1)的二进制表示:0000 0000,1 & 0 = 0
2 ^ 1 = 2,二进制表示:0000 0010,(2-1)的二进制表示:0000 0001,2 & 1 = 0
2 ^ 2 = 4,二进制表示:0000 0100,(4-1)的二进制表示:0000 0011,4 & 3 = 0