OneCoder Avatar
OneCodercoderli.com · 937 篇博文
🧮 Algo

数据结构与算法

双指针、回溯剪枝、图论与搜索

🎨 视觉封面

LeetCode Number of 1 Bits

📅 2017-12-28·✍️ onecode·计算中...·⏱️ 3 分钟
#LeetCode#Python

Problem

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.

求整数转化为二进制数中,1的个数

Python3

PYTHON
# Write a function that takes an unsigned integer and returns the number of ’1' bits
# it has (also known as the Hamming weight).
#
# For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011,
# so the function should return 3.

# author li.hzh
class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        result = 0
        while n:
            n = n & n - 1
            result += 1
        return  result

print(Solution().hammingWeight(11))

分析

其实完全可以通过Reverst Bit中的方法,通过 & 1,右移把1统计出来。不过效率会略低。因为每一位都要检查。

这里通过一个技巧 n & (n-1),想象一下,每次都会消掉一个1,就加快了效率。

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!