zoukankan      html  css  js  c++  java
  • 【简单算法】44.位1的个数

    题目:

    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
    
    示例 :
    
    输入: 11
    输出: 3
    解释: 整数 11 的二进制表示为 00000000000000000000000000001011
     
    
    示例 2:
    
    输入: 128
    输出: 1
    解释: 整数 128 的二进制表示为 00000000000000000000000010000000

    解题思路:

    1.直接移位即可,右移32次,每次判断最后一位是否为1即可;

    代码如下:

    class Solution {
    public:
        int hammingWeight(uint32_t n) {
            int count = 0;
            while(n!=0){
                if(n&0x1 == 1){
                    count ++;
                }
                n = n>>1;
            }
            
            return count;
        }
    };

    2.观察n&n-1,则将消除一位1.

    class Solution {
    public:
        int hammingWeight(uint32_t n) {
            int ret = 0;
            
            while(n!=0){
               ret++;
               n = n&(n-1);
            }
            
            return ret;
        }
    };
  • 相关阅读:
    BeautifulSoup
    python爬虫操作excel
    requests
    urllib
    线程的基本用法
    WebView
    播放多媒体文件
    调用摄像头和相册
    03 pycharm编辑默认模板
    测试
  • 原文地址:https://www.cnblogs.com/mikemeng/p/9000238.html
Copyright © 2011-2022 走看看