LintCode-142.O(1)时间检测2的幂次

2019-05-31 16:09:10 浏览数 (1)

题目

描述

用 O(1) 时间检测整数 n 是否是 2 的幂次。

样例

n=4,返回 true; n=5,返回 false.

解答

思路

  1. 大于零。
  2. 2的整数幂次的二进制表示都是0...010...0,其减1后二进制表示为0...001...1,两个数按位取且(&)等于零。

代码

代码语言:javascript复制
class Solution {
    /*
     * @param n: An integer
     * @return: True or false
     */
    public boolean checkPowerOf2(int n) {
        // write your code here
        return (n>0)&&((n&(n-1))==0); 
    }
};

0 人点赞