leetcode338
是它的升级版,限定的是非负数。
此题可以为负数。
技术处理:
因为python的int是无线精度的,c++的int是32为的,所以python的负数相当于前面有无限个1,要对python的负数做处理
class Solution:
def NumberOf1(self, n):
# write code here
# 非负整数的题是leetcode的338题
if n < 0:
n = n & 0xffffffff
res = 0
# 每次清掉一个1
while n:
n &= n - 1
res += 1
return res