题目
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given an integer array nums, return the sum of Hamming distances between all the pairs of the integers in nums.
Example 1:
Input: nums = [4,14,2]
Output: 6
** Explanation:** In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
showing the four bits relevant in this case).
The answer will be:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
Example 2:
Input: nums = [4,14,4]
Output: 4
Constraints:
1 <= nums.length <= 10^4
0 <= nums[i] <= 10^9
The answer for the given input will fit in a 32-bit integer.
代码
class Solution {
public:
int totalHammingDistance(vector<int>& nums) {
if(nums.size()<=1)
return 0;
int dist = 0;
for(int j = 0; j<32; j++){
int bitnum = 0;
for(int i = 0; i<nums.size(); i++){
bitnum += (nums[i]>>j) & 1;
}
dist += bitnum * (nums.size()-bitnum);
}
return dist;
}
};
本文介绍如何计算给定整数数组中每对数之间的汉明距离总和,通过实例和代码实现,适用于长度不超过10^4且数值范围在10^9内的数组。
2175

被折叠的 条评论
为什么被折叠?



