[477][中等] 汉明距离总和
题目描述
输入: 4, 14, 2
输出: 6
解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
所以答案为:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.解题思路
参考资料
最后更新于
输入: 4, 14, 2
输出: 6
解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
所以答案为:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.最后更新于
class Solution:
def totalHammingDistance(self, nums: List[int]) -> int:
n = len(nums)
final = 0
for i in range(32):
count1 = 0
p = 1 if i == 0 else p << 1
for num in nums:
if num & p != 0:
count1 += 1
final += count1 * (n - count1)
return final