列表

详情


477. 汉明距离总和

两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和

 

示例 1:

输入:nums = [4,14,2]
输出:6
解释:在二进制表示中,4 表示为 0100 ,14 表示为 1110 ,2表示为 0010 。(这样表示是为了体现后四位之间关系)
所以答案为:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6

示例 2:

输入:nums = [4,14,4]
输出:4

 

提示:

相似题目

汉明距离

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int totalHammingDistance(vector<int>& nums) { } };

golang 解法, 执行用时: 36 ms, 内存消耗: 6.5 MB, 提交时间: 2021-05-28 15:37:23

func totalHammingDistance(nums []int) int {
    ans, length := 0, len(nums)
    for i:=0;i<31;i++ {
        count := [2]int{}
        for j:=0;j<length;j++ {
            count[nums[j]&1]++
            nums[j] >>= 1
        }
        ans += count[0] * count[1]
    }
    return ans
}

上一题