目录
题目概述(中等难度)
思路与代码
思路展现
代码示例
题目概述(中等难度)
题目链接:
点我进入leetcode
思路与代码
思路展现
这道题目思路依然取自我们K神大佬,这里就不再做过多的赘述了
关于逻辑右移,左移,右移还不清楚的小伙伴可以来看这篇题解:
点我进入题解
或者来看我的这篇博客:
点我进入博客
二进制减法不会的同学可以来看这篇博客:
点我进入博客
代码示例
代码1:
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int res = 0; while(n != 0) { //这里直接+=是非常便捷的写法,无需使用if语句判断n&1是否等于1或者0 res += n&1; //逻辑右移 n >>>= 1; } return res; } }
代码2:
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int res = 0; while(n != 0) { //先把1的个数统计后,再去做与运算. res++; n &= (n-1); } return res; } }