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

给出两个整数 x 和 y,计算它们之间的汉明距离。

内置位计数功能

class Solution {public int hammingDistance(int x, int y) {return Integer.bitCount(x ^ y); }
}

逐个移位

class Solution {public int hammingDistance(int x, int y) {int xor = x ^ y;int distance = 0;while (xor != 0) {if (xor & 1 == 1)distance += 1;xor = xor >> 1;}return distance;}
}
  • 同样的思路,在异或得到 xor 后,可以选择不将 xor 逐位右移,而是用变量 flag = 1 ,每次右移flag,并和 xor 进行与运算

布赖恩·克尼根算法

  • 方法二是逐位移动,逐位比较边缘位置是否为 1。寻找一种更快的方法找出等于 1 的位数。
  • 遇到最右边的 1 后,如果可以跳过中间的 0,直接跳到下一个 1,效率会高很多。这是布赖恩·克尼根位计数算法的基本思想
class Solution {public int hammingDistance(int x, int y) {int xor = x ^ y;int distance = 0;while (xor != 0) {distance += 1;// remove the rightmost bit of '1'xor = xor & (xor - 1);}return distance;}
}

LeetCode 461. 汉明距离 (布赖恩·克尼根算法)相关推荐

  1. LeetCode刷题(43)~汉明距离【异或+布赖恩·克尼根算法】

    题目描述 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例: 输入: x = ...

  2. LeetCode刷题(45)~位1的个数【布赖恩·克尼根算法】

    题目描述 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:00000000000000000000000000001011 ...

  3. 【算法】布赖恩·克尼根算法——天才算法求二进制中1的个数

    题目背景 做leetcode第461题汉明距离的时候,发现一个很骚的求1的个数的算法,大呼牛逼! 其实题目本身思路不难,就是求异或然后算1个个数,只是没有想到还可以用这么骚的方式来求. 布赖恩·克尼根 ...

  4. 学会这道题,解决位运算,布莱恩·克尼根算法!

    布莱恩·克尼根算法 题目描述1 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 提示: 请注意,在某些语言(如 Java) ...

  5. java 汉明距离_Java实现 LeetCode 461 汉明距离

    461. 汉明距离 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例: 输入 ...

  6. 布赖恩·克尼根位计数算法说明及简单使用

    1,算法说明 一个数 number,若对 number 与 number-1 做与运算,即 number&(number-1) 时,则number的 二进制表示中最右边为 1 的位会被置零. ...

  7. LeetCode 461. 汉明距离(异或^ 与)

    文章目录 1. 题目 2. 解题 1. 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < ...

  8. leetcode 461. 汉明距离(位运算)

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例:输入: x = 1, y ...

  9. leetcode - 461. 汉明距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0≤x,y<231.0 ≤ x, y < 2^{31}.0 ...

最新文章

  1. python opencv 灰度图非局部平均去噪
  2. java 数字转26个字母和26个字母转数字
  3. 2017202110104-高级软件工程2017第8次作业—个人总结
  4. 拓扑排序之变量序列代码
  5. docker run命令_CVE-2019-14271:Docker cp命令漏洞分析
  6. Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架
  7. Geatpy框架使用基于NSGA-II算法的多染色体多目标进化算法案例(moea_psy_NSGA2_templet)
  8. 使用Docker支持创建ASP.NET Core应用程序
  9. Spring框架知识要点总结(第一天)
  10. 会畅通讯登陆创业板上市,CEO黄元庚说云视频是下一个万亿级市场
  11. Android:读取assets目录下文件(二)
  12. matconvnet(CPU版本)基本使用
  13. 中兴和华为的面试经历
  14. vscode 插件-常用插件
  15. 阿里云国际站和国内站的区别
  16. Windows Server 2012 IPAM的管理
  17. word自带公式等号对齐(可任意符号处对齐)
  18. STATA 生存分析cox 等比例风险假设
  19. 11个相似图片搜索网站(以图找图)[转]
  20. 如何让人更高效的完成事情

热门文章

  1. 心电图学习笔记(1)
  2. 如何在lion系统下安装Xcode 3.2.x版本
  3. Vista和DirectX 10(转载)
  4. 无敌哥-创新设计思维
  5. 成人注意缺陷多动障碍在内外源冲突时的表现
  6. 免费的视频压缩软件,踩了好多坑之后,终于找到了——Handbrake
  7. 弗里曼(Freeman)链码
  8. 电脑上安装windows phone 8模拟器(wp8) 和wp8手机解锁 详细教程 wp7也适用
  9. 香港证券监管机构发布STO详细指南
  10. android 精品软件,《分享精彩应用 Android精品软件推荐》