计算二进制中每一位的 0和1 的数量分别为n-c和c,则这一位的汉明距离为(n-c)*c
然后在诸位计算即可
class Solution:
def totalHammingDistance(self, nums: List[int]) -> int:
n = len(nums)
ans = 0
for i in range(30):
c = sum(((val >> i) & 1) for val in nums)
ans += c * (n - c)
return ans