Total Hamming Distance
给一个数组, 其中每个数的hamming distance. 首先考虑一下binary, 因为binary除了0就是1, 所以0和1的差距可以通过数每个digit上的1后, 做乘法后想加得出.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Solution { public int totalHammingDistance(int[] nums) { int total = 0; int n = nums.length; for(int j = 0; j < 32; j++) { int bit = 0; for(int i = 0; i < n; i++) { bit += (nums[i] >>j) & 1; } total += bit*(n-bit); } return total; } } |