逐对计算汉明距离,会超时报错
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
x = x^y
y = 0
while x:
y += 1
x = x&(x-1)
return y
改成计算位移i位后,0和1的乘积,问题解决
class Solution:
def totalHammingDistance(self, nums: List[int]) -> int:
res = 0
n = len(nums)
for i in range(32):
ones = 0
for num in nums:
if num>>i & 1:
ones +=1
res += ones * (n-ones)
return res