477.汉明距离总和
- 互联网
- 2025-09-17 23:12:01

汉明距离总和 题目描述尝试做法推荐做法 题目描述
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。
给你一个整数数组 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
提示:
1 <= nums.length <= 104 0 <= nums[i] <= 109 给定输入的对应答案符合 32-bit 整数范围
尝试做法 class Solution { public int totalHammingDistance(int[] nums) { int ans = 0; for(int i = 0; i < nums.length; ++i){ for(int j = i; j < nums.length; ++j){ ans += Integer.bitCount(nums[i] ^ nums[j]); } } return ans; } }没有想到可以降低时空复杂度的方法
推荐做法 class Solution { public int totalHammingDistance(int[] nums) { int ans = 0; for (int x = 31; x >= 0; x--) { int s0 = 0, s1 = 0; for (int u : nums) { if (((u >> x) & 1) == 1) { s1++; } else { s0++; } } ans += s0 * s1; } return ans; } } 作者:宫水三叶 链接: leetcode /problems/total-hamming-distance/solutions/799569/gong-shui-san-xie-ying-yong-cheng-fa-yua-g21t/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。将数组元素化零为整,作为一个整体来看待 计算32位int中的每一位会产生的海明距离,然后再求和
477.汉明距离总和由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“477.汉明距离总和”