东寻

导航

二进制中1的个数

##题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路

时间复杂度O(n),空间复杂度O(1)。

代码

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n != 0) {
            count++;
            n &= n-1;
        }
        return count;
    }
}

笔记

n&n-1作用是将n最后一位1变成0,类似树状数组的lowbit。

posted on 2020-02-17 14:08  东寻  阅读(204)  评论(0编辑  收藏  举报