#191 Number of 1 Bits

原创 2015年07月09日 20:19:23

没有找到数算书。。摸了一本C++ Primer过来。再从网上学学吧~

今天还是看看简单题好了,哪里不会学哪里。

挑一道看起来就简单的嘿嘿。

#191 Number of 1 Bits

题目是查找32位无符号整数中bit上1的个数。首先想到的自然是&1然后移位啦~

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

中间脑残了两次敲错了一些,果然缺少记事本写C++的经验还是不行呀。4ms Accepted。但是感觉应该还有更好的解法吧,不过位运算这里当年学ICS就发现自己缺少经验了,想了一下没有回忆起学过什么,于是还是百度一下好了。学习了Canglingye的解法,又打开了新世界的大门。

解法原理也很简单,看过一次之后以后一定就会啦。想法就是n&n-1,这样每次就会少一个1(因为将n最后的一个1变成了0),这样看与运算的次数就行了。

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int sum = 0;
        while ( n!= 0 )
        {
            n = n&(n-1);
            sum ++;
        }
        return sum;
    }
};

按照Canglingye的说法上一个解法会超时而这个不会,不过分析可以知道第二种只是平均更快,而最差情况仍然是要32次循环。


不知道是否有最坏情况更好的解法,除了打表还没想到别的。如果有的话请多多指教啦!

版权声明:本文为博主原创文章,未经博主允许不得转载。

深入理解计算机系统 lab1 ——datalab 解答 (95个ops)

/* * CS:APP Data Lab * * * * bits.c - Source file with your solutions to the Lab. * ...
  • KQZXCMH
  • KQZXCMH
  • 2013年09月20日 12:54
  • 19691

datalab 数据表示实验

一直都想每天写博客,然后又经常拖,还有这个是作业,用的时间比较久,然后自己又是脑子不灵活的那种,所以写出来的东西可能会有很多错误,欢迎大家指出来交流交流,互相进步。下次实验室bomb,拆炸弹,不知道能...
  • tzh476
  • tzh476
  • 2016年04月30日 00:11
  • 4706

关于Genymotion使用android5.1报错或者无法启动的解决方法

情况一: 启动虚拟机的时候,报错,提示: Caution: the number of CPUs of the virtual device has been forced to 1. Virtua...
  • LKL9413
  • LKL9413
  • 2015年08月12日 16:40
  • 1768

[191] Number of 1 Bits

给定一个整数,统计这个32位整数中1的数量。
  • camlot_
  • camlot_
  • 2016年06月27日 20:23
  • 215

LeetCode笔记:191. Number of 1 Bits

判断一个无符号数的二进制有多少个1
  • Cloudox_
  • Cloudox_
  • 2016年09月22日 09:32
  • 984

LeetCode 191.Number of 1 Bits 解题报告

LeetCode 191.Number of 1 Bits 解题报告
  • camellhf
  • camellhf
  • 2016年09月11日 10:31
  • 317

[LeetCode][191][Number of 1 Bits]

题目链接:https://leetcode.com/problems/number-of-1-bits/ 题目描述: Write a function that takes an unsigned ...
  • zhemeteor
  • zhemeteor
  • 2015年03月18日 15:48
  • 241

LeetCode 191. Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know...
  • Appletable
  • Appletable
  • 2016年03月05日 10:27
  • 158

【leetcode】191. Number of 1 Bits

一、题目描述 Write a function that takes an unsigned integer and returns the number of ’1' bits it ha...
  • xiaoquantouer
  • xiaoquantouer
  • 2016年06月07日 10:10
  • 138

Leetcode 191 Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know...
  • u012614906
  • u012614906
  • 2017年03月12日 20:59
  • 606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#191 Number of 1 Bits
举报原因:
原因补充:

(最多只允许输入30个字)