477. 汉明距离总和
Posted lgz0921
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了477. 汉明距离总和相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/total-hamming-distance/
思路:
第一种方法:直接暴力,不解释了,思路和https://leetcode-cn.com/problems/hamming-distance/这个题是一样的,这个题的题解:https://blog.csdn.net/lgz0921/article/details/117327193
第二种方法:n个数拆解每一位,统计当前位有几个1假设有x个,则当前位对结果的贡献就是x*(n-x)。(2^30 = 1073741824 > 10^9)
上代码:
第一种方法(用java写的):
class Solution {
public int totalHammingDistance(int[] nums) {
int result = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
result += Integer.bitCount(nums[i] ^ nums[j]);
}
}
return result;
}
}
第二种方法(用kotlin写的):
class Solution {
fun totalHammingDistance(nums: IntArray): Int {
var result = 0
for (i in 0 until 30) {
var x = 0
for (num in nums) {
x += num shr i and 1
}
result += x * (nums.size - x)
}
return result
}
}
以上是关于477. 汉明距离总和的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 477 汉明距离总和[数学 异或] HERODING的LeetCode之路
477 Total Hamming Distance 汉明距离总和