当前位置:首页 > 未命名 > 正文内容

【解题报告】lintcode365求二进制中有多少个1

u3blog8年前 (2016-05-13)未命名255

题意

求一个32位整数的二进制中有多少个1

解法

位运算,每次减一然后按位与,由于借位原理,当数字变为0的时候,就没有1了 例子: 5(101) 第一轮 5 - 1 = 4(100) 5 & 4 = 4(100) 第二轮 4 - 1 = 3(011) 4 & 3 = 0(000) 此时n = 0,停止,进行了2轮,所以有两个1

代码

public class Solution {
    /**
     * @param num: an integer
     * @return: an integer, the number of ones in num
     */
    public int countOnes(int n) {
        // write your code her
            int count = 0;
        while(n!= 0){
            count++;
            n = n & (n - 1);
         }
        return count;
    }
};

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=382

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。