#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次循环。


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

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

相关文章推荐

[191] Number of 1 Bits

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

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...

【leetcode】191. Number of 1 Bits

一、题目描述 Write a function that takes an unsigned integer and returns the number of ’1' bits it ha...

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...

leetCode 191. Number of 1 Bits

题目链接:https://leetcode.com/problems/number-of-1-bits/     题目内容: Write a function that takes an unsi...

LeetCode笔记:191. Number of 1 Bits

判断一个无符号数的二进制有多少个1

LeetCode 191.Number of 1 Bits 解题报告

LeetCode 191.Number of 1 Bits 解题报告

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

题目链接:https://leetcode.com/problems/number-of-1-bits/ 题目描述: Write a function that takes an unsigned ...

148. Sort List\191. Number of 1 Bits\476. Number Complement\342. Power of Four

题目描述 代码实现题目描述Sort a linked list in O(n log n) time using constant space complexity.对一个链表进行排序,时间复杂度为O...

leetCode191/201/202/136 -Number of 1 Bits/Bitwise AND of Numbers Range/Happy Number/Single Number

链接:https://leetcode.com/problems/number-of-1-bits/ 此题关键是如何判断一个数字的第i为是否为0  即: x& (1 class Solution { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#191 Number of 1 Bits
举报原因:
原因补充:

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