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

 

posted on 2017-04-19 11:39  Sempron2800+  阅读(128)  评论(0编辑  收藏  举报