191. 位1的个数

图片说明

  • 初始版本为这个 但是有个问题就是无法区分负数
    public class Solution {
      // you need to treat n as an unsigned value
      public int hammingWeight(int n) {
           int ans = 0;
           while(n>0) {
              if((n&1)==1) 
                  ans++;
              n>>=1;
           }
          return ans;
      }
    }
  • 改为以下版本 用一个数来跟进每个位的情况 就不会负数>>....=> 0
    public class Solution {
      public int hammingWeight(int n) {
           int ans = 0;
           int flag = 1;
           for(int i = 0 ; i< 32 ;i++) {
               if((n&flag)!=0) 
                   ans++;
               flag<<=1;
           }
           return ans;
       }
    }
    public int hammingWeight(int n) {
      int sum = 0;
      while (n != 0) {
          sum++;
          n &= (n - 1);
      }
      return sum;
    }
全部评论

相关推荐

求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务