博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Total Hamming Distance
阅读量:4952 次
发布时间:2019-06-11

本文共 1240 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

The  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.

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.

题解:

进阶题目.

对于int的32位的每一位,计算在这一位是1的array element个数k, 那么在这一位是0的个数就是nums.length-k. 对于这一位就有k*(nums.length-k)种选法可以产生Hamming Distance. 然后将32位Hamming Distance 个数相加就是总数.

Time Complexity: O(1). Space: O(1).

AC Java:

1 public class Solution { 2     public int totalHammingDistance(int[] nums) { 3         int res = 0; 4         int len = nums.length; 5          6         for(int i = 0; i< 32; i++){ 7             int bitCount = 0; 8             for(int j = 0; j
> i) & 1;10 }11 res += bitCount*(len - bitCount);12 }13 14 return res;15 }16 }

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/6242014.html

你可能感兴趣的文章
ViewPager的简单使用
查看>>
hdu 1998 奇数阶魔方(找规律+模拟)
查看>>
c#我不知道的类型
查看>>
客户心态创业需注意一下几点
查看>>
安装环境在thinkpad上安装debian wheezy (Note of install debian wheezy on Thinkpad)
查看>>
安装redis-stat
查看>>
01.数据结构与算法
查看>>
利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码
查看>>
内核线程、轻量级进程、用户线程
查看>>
优化表的数据类型
查看>>
Rotate List 【要优化】
查看>>
在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存
查看>>
用模板写快速排序-数组
查看>>
Rock Paper Azure Challenge春季比赛来了!
查看>>
VC++获取DNS服务器地址
查看>>
[LeetCode] Length of Last Word
查看>>
MySQL数值类型
查看>>
SQL Server-聚焦INNER JOIN AND IN性能分析(十四)
查看>>
SQL索引优化
查看>>
bzoj 3192 删除物品
查看>>