这道题计算数组中所有元素的汉明距离
我的解法很常规。结果超时,时间O(n2)
这是我的答案
public 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 += hammingDistance(nums[i],nums[j]);
}
return result;
}
public int hammingDistance(int first,int second){
int distance = 0;
int result = first ^ second;
while(result!=0){
distance += (result>>1) & 1;
result = result>>1;
}
return distance;
}
}
solution的答案是取每位的所有元素为1的个数,然后用总数-个数就是该位的汉明距离为1的总数
public class Solution {
public int totalHammingDistance(int[] nums) {
int total = 0, n = nums.le