题目描述

输入一个整数,输出该数二进制中表示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);
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2021-09-07
  • 2021-09-07
  • 2021-10-28
  • 2021-07-18
  • 2021-09-07
相关资源
相似解决方案