477. Total Hamming Distance

来源:互联网 发布:淘宝拍照用什么手机好 编辑:程序博客网 时间:2024/06/05 05:42

477. 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, 2Output: 6Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (justshowing 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.
Tips:是

461. Hamming Distance的增进版,两两求海明距离再相加肯定是不行的(会超时),所以这里还是可以考虑位操作,

每一位上的数字要么是1,要么是0,那么假如有4个数字,个位上二进制分别为0,1,0,1,那么其实个位上的海明距离之和,2*2(2个1,2个0)

代码:

public class Solution {    public int totalHammingDistance(int[] nums) {         int sum=0; int length=nums.length; boolean flag=true; while(flag==true) { flag=false; int j=0; for(int i=0;i<nums.length;i++) {       j+=nums[i] & 1;              nums[i]=nums[i]==0?0:nums[i]>>1;              if(nums[i]>0)              flag=true; } sum+=j*(length-j); } return sum;    }}



1 0
原创粉丝点击