描述
两个整数之间的汉明距离是相应位不同的位置数。
现在你的工作是找到所有给定数字对之间的总汉明距离。
说明
1.给定数组的元素在0到10^9的范围内
2.数组长度不超过10^4。
样例
- 例1:
输入: [4, 14, 2]
输出: 6
解释:在二进制表示中,4是0100,14是1110,2是0010(只是显示在这种情况下相关的四个位)。 所以答案是:
汉明距离(4,14) + 汉明距离(4,2) + 汉明距离(14,2) = 2 + 2 + 2 = 6。
- 例2:
输入: [2, 1, 0]
输出: 4
解释:在二进制表示中,2是10,1是01,0是00(只是显示在这种情况下相关的四个位)。 所以答案是:
汉明距离(2,1) + 汉明距离(1,0) + 汉明距离(2,0) = 2 + 1 + 1 = 4。
解析
可参考835. Hamming距离
totalHammingDistance = function (nums) {
var total = 0,n = nums.length;
for (var j = 0; j < 32; j++) {
var bitCount = 0;
for (var i = 0; i < n; i++) {
bitCount += (nums[i] >> j) & 1;
}
total += bitCount*(n - bitCount);
}
return total;
}