zoukankan      html  css  js  c++  java
  • lintcode-142-O(1)时间检测2的幂次

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

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

    样例

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

    挑战

    O(1) time

    标签

    比特位操作

    思路

    使用位操作, 2 的幂次的 2 进制形式中只包含一个 1,如1(0001),2(0010),4(0100)。其他数包含多个 1(0除外),如3(0011),所以只需要将 n 与 n-1 逐位与,即可判定。

    code

    class Solution {
    public:
        /*
         * @param n: An integer
         * @return: True or false
         */
        bool checkPowerOf2(int n) {
            // write your code here
            if(n <= 0) {
                return false;
            }
            return n & (n-1) ? false : true;
        }
    };
    
  • 相关阅读:
    【leetcode】反转字符串
    【leetcode】反转字符串 II
    053-669
    053-668
    053-667
    053-666
    053-665
    053-664
    053-663
    053-662
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7224904.html
Copyright © 2011-2022 走看看