Hamming Distance 问题
目录
警告
本文最后更新于 2019-04-14,文中内容可能已过时。
前言
经过了好久,终于开始学习算法,刷算法题了。从LeetCode上开始刷题。也是完成之前立下的flag。
Hamming Distance(#461)
编号 | 名称 | 等级 |
---|---|---|
461 | Hamming Distance | Easy |
思路
这个试题 主要是计算 两个数源码中有几位不相同。
对于这个问题,首先我想到的是用按位异或(^),按位异或后再用递归移位来计算。这仅仅是一个想法。但是思考了好久都没有写出来。无奈之下只好到 Discuss 看一下。
原来还有这个奇淫技巧。。。。。
Java
是提供了 API
来统计原码中的 1 的。这个方法叫做 binCount()
。 这个题就这样解决了。
代码
public class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}
Total Hamming Distance(#477)
编号 | 名称 | 等级 |
---|---|---|
477 | Total Hamming Distance | medium |
思路
该题只不过是把给出的数组中的每两个数的 Hamming Distance
相加。
还是使用 #461
的方法。
代码
public class Solution {
public int totalHammingDistance(int[] nums) {
for (int i = 0; i< nums.length-1;i++){
for(int j = i+1;j<nums.length;j++){
sum += Integer.bitCount(nums[i] ^ nums[i + 1]);
}
}
return sum;
}
}
如果你觉得这篇文章对你有所帮助,欢迎赞赏~
赞赏