关闭

LeetCode Power of Two

192人阅读 评论(0) 收藏 举报
分类:

判断一个数是不是2的幂,有三种方法

第一种,直接右移操作,看对2取模是否为1

代码如下

public class Solution {
    public boolean isPowerOfTwo(int n) {
        while (n > 1) {
            if (n % 2 != 0) return false;
             n /= 2;
        }
        
        return n == 1;
    }
}

第二种方法,统计二进制表示是位为1的个数,为1说明是2的幂

代码如下

public class Solution {
    public boolean isPowerOfTwo(int n) {
        int count = 0;

        for (int i = 0; i < 32; i++) {
            if ((n & (1 << i)) != 0) count++;
        }

        return n > 0 && count == 1;
    }
}

第三种,直接用n&(n-1) == 0来判断

代码如下

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:722701次
    • 积分:18833
    • 等级:
    • 排名:第472名
    • 原创:1235篇
    • 转载:226篇
    • 译文:0篇
    • 评论:26条
    博客专栏
    最新评论