【LeetCode】461. Hamming Distance
2018-02-12 18:20
405 查看
题目是要求二进制数字之间的不同位共有几位,也就是说求x,y异或运算后,有几个1的问题(这里应当灵活应用逻辑运算与异或等,这些运算本身就是基于二进制计算的,不需要十进制转二进制那么麻烦)
然后就是统计几个1的问题,记录就好,没有转换为二进制的必要。s1是比较笨的一种方法,但是思路简单更好理解些。
s2理解后,其实更简单。主要是用到了一个与操作,n &= n-1;每一次与操作,原数值中的1就减少一个,可以写几个数字演算一下,然后在n != 0的情况下,可以与几次,就证明有几个1
s1#include <iostream>
using namespace std;
class Solution {
public:
int hammingDistance(int x, int y) {
int mid;
x ^= y;
int i = 0;
mid = x;
while(mid > 2){
x = mid;
mid = x / 2;
if(x % 2) ++i;
}
if(mid != 0)
++i;
return i;
}
};
int main() {
Solution s;
cout << s.hammingDistance(73,63) << endl;
system("pause");
return 0;
}s2class Solution {
public:
int hammingDistance(int x, int y) {
int d = 0;
int n;
n = x ^ y;
while(n){
++d;
n &= n-1;
}
return d;
}
};
相关文章推荐
- LeetCode-461. Hamming Distance
- LeetCode 461. Hamming Distance
- [Leetcode从零开刷]461. Hamming Distance
- leetcode----461. Hamming Distance
- 【LeetCode】461. Hamming Distance
- LeetCode——461. Hamming Distance(C++,模拟)
- LeetCode 461. Hamming Distance
- 【LeetCode】 461. Hamming Distance
- [leetcode]: 461. Hamming Distance
- 【Leetcode】461. Hamming Distance
- LeetCode 461. Hamming Distance
- [LeetCode]461. Hamming Distance(汉明距离)
- LeetCode :【Easy】461. Hamming Distance
- LeetCode 461. Hamming Distance(Java)
- LeetCode 461. Hamming Distance
- LeetCode--461. Hamming Distance(汉明距离)Python
- 【Leetcode】461. Hamming Distance
- [LeetCode] 461. Hamming Distance 汉明距离
- leetcode 461. Hamming Distance
- [leetcode: Python]461. Hamming Distance