Total Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Now your job is to find the total Hamming distance between all pairs of the given numbers.
Example:
Input: 4, 14, 2 Output: 6 Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just showing the four bits relevant in this case). So the answer will be: HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
这题有个关键点,如果有n个数,要么是1要么是0,那么如果里面有k个1,那么Hamming distance = k * (n - k)
1 public class Solution { 2 public int totalHammingDistance(int[] nums) { 3 int total = 0, n = nums.length; 4 for (int j = 0; j < 32; j++) { 5 int bitCount = 0; 6 for (int i = 0; i < n; i++) { 7 bitCount += (nums[i] >> j) & 1; 8 } 9 total += bitCount * (n - bitCount); 10 } 11 return total; 12 } 13 }