LintCode 1217. 总汉明距离 JavaScript算法

描述

两个整数之间的汉明距离是相应位不同的位置数。

现在你的工作是找到所有给定数字对之间的总汉明距离。

说明

1.给定数组的元素在0到10^9的范围内
2.数组长度不超过10^4。

样例

-1:

输入: [4, 14, 2]
输出: 6
解释:在二进制表示中,40100,141110,20010(只是显示在这种情况下相关的四个位)。 所以答案是:
汉明距离(4,14) + 汉明距离(4,2) + 汉明距离(14,2) = 2 + 2 + 2 = 6-2:

输入: [2, 1, 0]
输出: 4
解释:在二进制表示中,210,101,000(只是显示在这种情况下相关的四个位)。 所以答案是:
汉明距离(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;
}


运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/108635588