• 剑指Offer 15. 二进制中一的个数


    剑指Offer 15. 二进制中一的个数

    请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

    示例 1:

    输入:00000000000000000000000000001011
    输出:3
    解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
    

    示例 2:

    输入:00000000000000000000000010000000
    输出:1
    解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
    

    示例 3:

    输入:11111111111111111111111111111101
    输出:31
    解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
    

    方法一

    public class Solution {
        // you need to treat n as an unsigned value
        public int hammingWeight(int n) {
     		int cnt = 0;
            while(n != 0){
                //只有最后一位为1 , n&1的值才为1
                cnt += n&1;
                //右移一位
                n >>>1;
            }
            return cnt;
        }
    }
    

    方法二

    public class Solution {
        // you need to treat n as an unsigned value
        public int hammingWeight(int n) {
     		int cnt = 0;
            while(n != 0){
                //每次都移除右边第一个1, 例如 1000 & 0111
                n &= (n-1);
                cnt++;
            }
            return cnt;
        }
    }
    
  • 相关阅读:
    LAMP企业架构读写分离
    docker技术入门(2)
    docker技术入门(1)
    终极实验
    java——并查集 UnionFind
    java——字典树 Trie
    java——线段树 SegmentTree
    java——最大堆 MaxHeap
    java——链表映射 LinkedListMap
    java——数据结构
  • 原文地址:https://www.cnblogs.com/kikochz/p/13402827.html
Copyright © 2020-2023  润新知