算法题:8、二进制中1的个数
题目描述
输入一个整数,输出该数二进制中表示1的个数
解题思路
利用技巧 n&(n-1),该位运算去除n的位级表示中最低的那一位。
n            :10110100
n-1          :10110011
n&(n-1)      :10110000
时间复杂度O(M),其中M表示1的个数。
代码
public int NumberOf1(int n) {
    int cnt = 0;
    while (n != 0) {
        cnt++;
        n &= (n - 1);
    }
    return cnt;
}
也可以直接使用jdk里的Integer.bitCount()
public int NumberOf1(int n) {
    return Integer.bitCount(n);
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号