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