477-Total Hamming Distance

kevin聰發表於2018-04-24

Description

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.

Note:

  1. Elements of the given array are in the range of 0 to 10^9
  2. Length of the array will not exceed 10^4.

問題描述

漢明距離為兩數二進位制表示對應位不同的個數。

現在你需要計算陣列中所有對的漢明距離之和


問題分析

迭代每一位, 對每一位算出漢明距離, 累加


解法

class Solution {
    public int totalHammingDistance(int[] nums) {
        int total = 0, n = nums.length;

        for (int j = 0;j < 32;j++) {
            int bitCount = 0;
            for (int i = 0;i < n;i++)   bitCount += (nums[i] >> j) & 1;
            total += bitCount * (n - bitCount);
        }

        return total;
    }
}

相關文章