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;}
};