461.汉明距离
【LetMeFly】461.汉明距离
力扣题目链接:https://leetcode.cn/problems/hamming-distance/
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
示例 1:
输入:x = 1, y = 4 输出:2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
示例 2:
输入:x = 3, y = 1 输出:1
提示:
0 <= x, y <= 231 - 1
方法一:位运算
我们只需要按照题意,分别提取出$x$和$y$的每一位,看看它们是否相等。
如果不相等,答案数量+1
怎么“提取”出$x$在二进制下的某一位呢?
假设我们要提取$x$的二进制下从低到高的第$i + 1$位,那么我们可以构造一个用来进行与运算的数
1 |
|
这样$mask$在二进制下就是$1000…0$
我们用$x$与$mask$进行与运算,得到的就是$x$的这一位以及后面的数个$0$
- 时间复杂度$O(C)$,其中$C=31$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
方法二:还是位运算
方法二类似方法一,不同之处是“取出某一位”的方式
方法二中,我们将$x$右移$i$位,再与$1$进行与运算,就得到了$x$的第$i+1$位
1 |
|
- 时间复杂度$O(C)$,其中$C=31$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127510681
461.汉明距离
https://blog.letmefly.xyz/2022/10/25/LeetCode 0461.汉明距离/