0
点赞
收藏
分享

微信扫一扫

lintcode: O(1) Check Power of 2

妖妖妈 2022-12-01 阅读 135


Using O(1) time to check whether an integer n is a power of 2. Example
For n=4, return true;

For n=5, return false;

Challenge O(1) time

思路:如果n是2的幂,则n的二进制表示中只有一个1. 用n&(n-1),如果结果是0则表示只有一个1. 比如:

((4 & 3) == 0)
100 = 4
011 = 3

有两个例外:

  • 排除n==0的情况
  • 排除INT_MIN。注意INT_MIN的二进制表示为1000 0000 0000 0000 0000 0000 0000 0000

class Solution {
public:
/*
* @param n: An integer
* @return: True or false
*/
bool checkPowerOf2(int n) {
// write your code here
if(!n||n==INT_MIN){
return false;
}
return !(n&(n-1));
}
};


举报

相关推荐

0 条评论