zoukankan      html  css  js  c++  java
  • 【LeetCode & 剑指offer刷题】位运算题2:15 二进制中1的个数(191. Number of 1 Bits)

    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    191. Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).
    Example 1:
    Input: 11
    Output: 3
    Explanation: Integer 11 has binary representation 00000000000000000000000000001011
    Example 2:
    Input: 128
    Output: 1
    Explanation: Integer 128 has binary representation 00000000000000000000000010000000
     
     
    //解法一:利用减一再做与运算可以使最右边的1变为0,统计1的个数
    class Solution
    {
    public:
        int hammingWeight(uint32_t n)
        {
            int count = 0;
            while(n) //有几个1就运算几次,比方法二效率高
            {
                count++;
                n = (n-1) & n; //通过减一再做与运算可以使最右边的1变为0,不断重复可以统计1的个数
            } //最后n变为0
            return count;
        }
    };
    //解法二:依次和1、10、100...10000000(31个0)做与运算
    class Solution
    {
    public:
        int hammingWeight(uint32_t n)
        {
            int count = 0;
            unsigned int mask = 1; //32位无符号数
            while(mask)
            {
                if(n & mask) count++;
                mask = mask << 1; //左移一位
            }
           
            return count;
        }
    };
     
     
  • 相关阅读:
    RxJava+okhttp3
    RetrofitOkHttp网络请求
    布局111
    网络请求展示数据
    一级列表展示购物车
    终极MVP二级购物车
    将博客搬至CSDN
    nyoj-开灯问题
    nyoj-数乌龟
    nyoj 正三角形的外接圆面积
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225042.html
Copyright © 2011-2022 走看看