zoukankan      html  css  js  c++  java
  • [编程题] lc [191. 位1的个数]

    [编程题] lc 191. 位1的个数

    题目

    image-20200730142335102

    输入输出

    image-20200730142352476

    Java代码

    理解:这个题输入给的是2进制

     //方法2:输入是二进制数的
         public int hammingWeight(int n) {
             int count=0;
             while(n!=0){
                 n = n&(n-1);  //这里的原理主要是n-1与上n每次会消除数n中的一个1,当n等于0了就消除完了
                 count++;
             }
             return count;
         }
    

    解释:n = n&(n-1); 这句

    ​ 这里的原理主要是n-1与上n每次会消除数n中的一个1,当n等于0了就消除完了。


    如果本题是把一个整型的十进制数计算其中二进制的1个个数。如下

    方法:求模取余

     //方法1:化为二进制的过程中计数(化二进制规则:模2取余);//这种输入是一个整形十进制.题目是给的二进制,不符合
        public int hammingWeight1(int n) {
            int count=0;
            while(n/2!=0){
                int m = n%2;
                if(m==1){count++;}
                n = n/2;
            }
            if(n%2==1){
                return count+1;
            }else{
                return count;
            }
        }
    

    输出:

    image-20200730142631844

  • 相关阅读:
    流程控制语句
    java运算符
    变量
    java虚拟机
    常量
    java注释
    java标识符
    单击显示随机文字
    2018/6/25~2018/6/29 周记
    2018/6/19~2018/6/22 周记
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13403570.html
Copyright © 2011-2022 走看看