给定一个整数数组,求出数组中所有比特对之间的距离之和。两个比特的距离定义为它们在二进制表示中所处位数的差的绝对值,例如,在数字 10 和 7 中,有两个比特对:(2,0) 和 (3,0)。它们的距离分别为 2 和 3,因此返回结果为 5。
示例代码:
def totalHammingDistance(nums):
n = len(nums)
res = 0
for i in range(32):
count = 0
for j in range(n):
count += (nums[j] >> i) & 1
res += count * (n - count)
return res
这里的解决方法是,对于每一位上的比特对,分别计算数组中该位为 0 和为 1 的数的个数,然后将这两个数相乘,得到该位上的比特对距离之和,最后将所有位的结果相加即为所求。这里的技巧在于将每个数字转换为二进制,并循环计算其每一位上的值。
上一篇:比特操作AND的神经网络
下一篇:比特梵德centos6无法启动