leetcode-Total Hamming Distance
2017-07-06 18:36
495 查看
先看题意:
Input: 4,14, 2
Output: 6
Explanation:In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
showingthe four bits relevant in this case). So the answer will be:
HammingDistance(4,14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
计算总的hamming距离,根据tips发现规律
0100
1110
0010
两两组合,竖着看,每一列带来的海明距离是(1的个数)*(0的个数)
确定好思路之后,接下来就是写代码了
一开始想的方法也是够笨,直接超时了,用的python
差评
接下来换了换思路
移位操作和累加操作下面这个更简洁些:
Input: 4,14, 2
Output: 6
Explanation:In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
showingthe four bits relevant in this case). So the answer will be:
HammingDistance(4,14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
计算总的hamming距离,根据tips发现规律
0100
1110
0010
两两组合,竖着看,每一列带来的海明距离是(1的个数)*(0的个数)
确定好思路之后,接下来就是写代码了
一开始想的方法也是够笨,直接超时了,用的python
class Solution(object): def totalHammingDistance(self, nums): """ :type nums: List[int] :rtype: int """ total=len(nums) n=0 count=0 while n<total: j=n+1 while j<total: count+= bin(nums ^nums[j]).count('1') j+=1 n+=1 return count
差评
接下来换了换思路
public class Solution { public int totalHammingDistance(int[] nums) { int n = nums.length; int total = 0; for(int i=0;i<32;i++){ int count = 0; for(int j=0;j<n;j++){ if((nums[j]&1) ==1){ count +=1; } nums[j] >>= 1; } total += count*(n-count); } return total; } }
移位操作和累加操作下面这个更简洁些:
public int totalHammingDistance(int[] nums) { int total = 0; int n = nums.length; for (int i=0;i<32;i++){ int counter = 0; for ( int j=0;j<n;j++){ counter += (nums[j] >> i) & 0x01; } total += counter*(n - counter); } return total; }
相关文章推荐
- [LeetCode] Total Hamming Distance 全部汉明距离
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- LeetCode 477: Total Hamming Distance
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- LeetCode No.477 TotalHammingDistance
- Leetcode: Total Hamming Distance
- LeetCode Total Hamming Distance
- 【LeetCode-477】Total Hamming Distance
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- [LeetCode]Total Hamming Distance(Java)
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- leetcode-477-Total Hamming Distance
- LeetCode: Total Hamming Distance
- [leetcode, python] Total Hamming Distance 多个数字之间的汉明距离
- LeetCode Total Hamming Distance
- Leetcode Total Hamming Distance 477