码迷,mamicode.com
首页 > 其他好文 > 详细

477. Total Hamming Distance

时间:2020-07-16 12:06:09      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:pairs   this   Plan   range   pos   ret   nts   position   AMM   

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 to 10^9
  2. Length of the array will not exceed 10^4.
class Solution {
    public int totalHammingDistance(int[] nums) {
        int res = 0;
        int le = nums.length;
        for(int i = 0; i < 32; i++){
            int cur1 = 0;
            for(int j = 0; j < nums.length; j++){
                    cur1 += ((nums[j]>>i) & 1);              
            }
            res += (cur1) * (le - cur1);
        }
        return res;
    }
}

经过观察发现,每一位的汉明距离,等于该位1的个数*0的个数

然后就32位,每一位都统计1的数量然后做一次计算,返回

477. Total Hamming Distance

标签:pairs   this   Plan   range   pos   ret   nts   position   AMM   

原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13320613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!