g0401_0500.s0477_total_hamming_distance.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0401_0500.s0477_total_hamming_distance;
// #Medium #Array #Math #Bit_Manipulation #2022_07_20_Time_5_ms_(95.10%)_Space_54.9_MB_(8.69%)
/**
* 477 - Total Hamming Distance\.
*
* Medium
*
* The [Hamming distance](https://en.wikipedia.org/wiki/Hamming_distance) between two integers is the number of positions at which the corresponding bits are different.
*
* Given an integer array `nums`, return _the sum of **Hamming distances** between all the pairs of the integers in_ `nums`.
*
* **Example 1:**
*
* **Input:** nums = [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). The answer will be: HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
*
* **Example 2:**
*
* **Input:** nums = [4,14,4]
*
* **Output:** 4
*
* **Constraints:**
*
* * 1 <= nums.length <= 104
* * 0 <= nums[i] <= 109
* * The answer for the given input will fit in a **32-bit** integer.
**/
public class Solution {
public int totalHammingDistance(int[] nums) {
int ans = 0;
int n = nums.length;
for (int i = 0; i < 32; i++) {
int ones = 0;
for (int k : nums) {
ones += ((k >> i) & 1);
}
ans = ans + (ones * (n - ones));
}
return ans;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy