美文网首页
【LeetCode】2的幂

【LeetCode】2的幂

作者: MyyyZzz | 来源:发表于2019-04-05 00:33 被阅读0次

    题目描述

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

    示例 1:
    输入: 1
    输出: true
    解释: 2^0 = 1

    解题思路1:

    若为2幂次方,则二进制只有一位为1,其余都为0;在计算机中负数以补码形式存在。
    所以:n & -n == n时,n只有一位为1;
    例如:8(00001000), -8(11111000), 00001000&11111000 = 00001000(8);

    代码1:

    class Solution {
    public:
        bool isPowerOfTwo(int n) {
            return (n>0) && (n & -n) == n;
        }
    };
    

    解题思路2:

    int能表示的最大2的幂次方数对n取余,为0返回true;

    代码2:

    class Solution {
    public:
        bool isPowerOfTwo(int n) {
            int a = 1;
            a<<=30;
            if(n<=0 || a%n)
                return false;
            return true;
        }
    };
    

    相关文章

      网友评论

          本文标题:【LeetCode】2的幂

          本文链接:https://www.haomeiwen.com/subject/evnciqtx.html