477. 汉明距离总和https://leetcode.cn/problems/total-hamming-distance/
难度中等266
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。
给你一个整数数组 nums
,请你计算并返回 nums
中任意两个数之间 汉明距离的总和 。
示例 1:
输入:nums = [4,14,2] 输出:6 解释:在二进制表示中,4 表示为 0100 ,14 表示为 1110 ,2表示为 0010 。(这样表示是为了体现后四位之间关系) 所以答案为: HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6
示例 2:
输入:nums = [4,14,4] 输出:4
提示:
1 <= nums.length <= 104
0 <= nums[i] <= 109
- 给定输入的对应答案符合 32-bit 整数范围
通过次数43,202提交次数71,344
class Solution {
public int totalHammingDistance(int[] nums) {
int ans = 0;
for(int i=0;i<nums.length;i++)
{
for(int j=i+1;j<nums.length;j++)
{
int a = nums[i]^nums[j];
while(a!=0)
{
if((a&1)==1) ans++;
a >>= 1;
}
}
}
return ans;
}
}
class Solution {
public int totalHammingDistance(int[] nums) {
int ans = 0;
int len = nums.length;
int n=0;
for(int i=0;i<30;i++)
{
n =0;
for(int j=0;j<len;j++)
{
if(((nums[j]>>i)&1)==1) n++;
}
ans += n*(len-n);
}
return ans;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68964.html