刷Leetcode还是能学到很多小知识的,今天学到了如何在二进制数中快速输出有几个1, 二进制中1的个数也称为汉明重量
Leetcode 链接:
https://leetcode-cn.com/problems/number-of-1-bits/description/
思路很简单:
1、设个数为0,原始数据是n
2、如果n等于0,输出个数,如果不等于零,n = n & (n-1)
3、个数加1,循环(2)
举个例子就很清楚了
n == 01001
n = n & (n-1) = (01001) & (01000) = 01000
n == 01000
n = n & (n-1) = (01000) & (00111) = 00000
这个巧妙的思路能够一步步的把最后一个1去除,从而得到二进制数中1的个数
上个代码:
#encoding=utf-8
import numpy as np
class Solution(object):
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
ans = 0
while n > 0:
tmp = n - 1
n &= tmp
ans += 1
return ans
版权声明:本文为ZouCharming原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。