zoukankan      html  css  js  c++  java
  • 剑指Offer 二进制中一的个数

     1 链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8
     2 来源:牛客网
     3 
     4 public class Solution {
     5     //从n的2进制形式的最右边开始判断是不是1
     6     /*
     7     * 该解法如果输入时负数会陷入死循环,
     8     * 因为负数右移时,在最高位补得是1
     9     * 二本题最终目的是求1的个数,那么会有无数个
    10     * 1了。
    11     */
    12     //-------------可能陷入死循环的解法---------------------
    13     public static int NumberOf1_CanNotUse(int n) {
    14         int count = 0;
    15         while (n != 0) {
    16             /*
    17             * 用1和n进行位与运算,
    18             * 结果要是为1则n的2进制形式
    19             * 最右边那位肯定是1,否则为0
    20             */
    21             if ((n & 1) == 1) {
    22                 count++;
    23             }
    24             //把n的2进制形式往右推一位
    25             n = n >> 1;
    26         }
    27         return count;
    28     }
    29     //---------------正解--------------------------------
    30     //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数
    31     private static int NumberOf1_low(int n) {
    32         int count = 0;
    33         int flag = 1;
    34         while (flag != 0) {
    35             if ((n & flag) != 0) {
    36                 count++;
    37             }
    38             flag = flag << 1;
    39         }
    40         return count;
    41     }
    42     //--------------------最优解----------------------------
    43     public static int NumberOf1(int n) {
    44         int count = 0;
    45         while (n != 0) {
    46             ++count;
    47             n = (n - 1) & n;
    48         }
    49         return count;
    50     }
    51     public static void main(String[] args) {
    52         //使用n=10,二进制形式为1010,则1的个数为2;
    53         int n = -10;
    54         System.out.println(n + "的二进制中1的个数:" + NumberOf1(n));
    55     }
    56 }
    View Code
  • 相关阅读:
    Redis 主从复制
    LESSON THREE
    SSIS OLEDB COMMAND RULES
    Hadoop step by step _ install and configuration environment
    repcached的安装练习
    Check list
    简单对象定位——xpath定位
    简单对象定位
    Python webdriver API- 浏览器的操作
    第一个自动化脚本示例
  • 原文地址:https://www.cnblogs.com/oscar-cnblogs/p/10772536.html
Copyright © 2011-2022 走看看