汉明距离总和

两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

计算一个数组中,任意两个数之间汉明距离的总和。

示例:

输入: 4, 14, 2

输出: 6

解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)

所以答案为:

HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.

注意:

  1. 数组中元素的范围为从 0到 10^9。
  2. 数组的长度不超过 10^4。

思路

题目分析:

这一题目如果借用汉明距离–位运算 分别求两位数字之间的汉明距离,最后再求和,那么肯定会超时。换一种思路:对每一个数的相同位置的上的二进制位进行判断,统计是1的个数cnt,那么为0的个数就是nums.size()-cnt,那么该二进制位就会形成cnt*(nums.size()-cnt)的汉明距离。

 class Solution {
public int totalHammingDistance(int[] nums) {
int cnt = 0, ans = 0;
for (int i = 0; i < 32; i++) {
cnt = 0;
for (int j = 0; j < nums.length; j++) {
if ((nums[j] & 1) > 0) {
cnt++;
}
nums[j] >>= 1;
}
ans += cnt * (nums.length - cnt);
}
return ans;
}
}

最新文章

  1. ZOJ Problem Set - 1109 Language of FatMouse
  2. Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)
  3. UESTC 878 温泉旅馆 --性质+枚举
  4. 【转】B树、B-树、B+树、B*树
  5. [VS2012]无法新建或者编译已有的项目
  6. eclipse中svn插件的安装与使用
  7. Highcharts使用=====通过指定日期显示曲线
  8. 大数据系列修炼-Scala课程07
  9. Cocos2dx使用网络图片
  10. (转)Centos搭建FTP服务器
  11. PHP 页面静态化/纯静态化/伪静态化
  12. mvc-dispatchar-servlet.xml文件报错
  13. Serv-u FTP迁移(windows_to_windwos)
  14. Net中应用 Redis 扩展类
  15. 遇到Io阻塞时会切换任务之【爬虫版】
  16. Celery异步任务队列/周期任务+ RabbitMQ + Django
  17. 回去看linux的指令
  18. 【转载】windows 下重置 mysql 的 root 密码
  19. Python爬虫入门(1-2):综述、爬虫基础了解
  20. idea maven install时,打包找不到微服务common中公用的包

热门文章

  1. azure powershell 获取可用镜像列表
  2. Beginning Python Chapter 1 Notes
  3. (六)我的JavaScript系列:更好的JavaScript之CoffeeScript
  4. Protocol Buffer学习教程之编译器与类文件(三)
  5. Web端 session cookies Application viewstate
  6. openfire4.0.2源码 使用 IntelliJ IDEA 搭建开发环境
  7. 两个div并列居中显示——当display:inline-block;时,两个div无法对齐即一高一矮
  8. 2017.10.5 QBXT 模拟赛
  9. UVA 11093 Just Finish it up 环形跑道 (贪心)
  10. CF Gym 100187J Deck Shuffling (dfs判连通)