这个题技巧性比较强,主要是思路将n与n-1进行相与操作,通过这个操作可以消掉n的二进制表示最右边的1,当然也可以对每一位进行比较然后计数,但是这样做的话,时间复杂度可能是个问题,以下链接提供了三种思路
https://www.cnblogs.com/xiaoyh/p/10249006.html
问题描述如下:
实现代码如下:
class Solution { public: int NumberOf1(int n) { int count=0; while(n!=0){ n=n&(n-1); count++; } return count; } };
原文:https://www.cnblogs.com/wq-9596/p/14848211.html