1.两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
看到这题,当然想到了按位异或^,并且c++内置了计算二进制数中1数量的函数__builtin_popcount()
class Solution {
public:
int hammingDistance(int x, int y) {
int num=x^y;
return __builtin_popcount(num);
}
};
2.汉明距离总和
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。
给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 。
暂时只有暴力解法
class Solution {
public:
int hammingDistance(int x, int y) {
int num=x^y;
return __builtin_popcount(num);
}
int totalHammingDistance(vector<int>& nums) {
int k=0;
for(int i=0;i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
{
k+=hammingDistance(nums[i],nums[j]);
}
}
return k;
}
};


















