目录

总结

题目

思路

C++代码


总结

位运算题目里,把复杂度降为 O(n) 的骚操作基本都是写一个 32 次(因为int型数据)的 for 循环,恰如好多”仅包含字母“的题目的骚操作都是写一个 26 次的 for 循环。

题目

477. 汉明距离总和

难度中等168收藏分享切换为英文接收动态反馈

两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

计算一个数组中,任意两个数之间汉明距离的总和。

示例:

输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
所以答案为:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.

注意:

  1. 数组中元素的范围为从 0到 10^9
  2. 数组的长度不超过 10^4

思路

位运算题目里,把复杂度降为 O(n) 的骚操作基本都是写一个 32 次(因为int型数据)的 for 循环,恰如好多”仅包含字母“的题目的骚操作都是写一个 26 次的 for 循环。

总结1.  思路是:比如有3个数(用二进制表示) (方向从右到左<-,分别为第1位、第2位...)第一个数 a: 1 0 0 1第二个数 b: 0 1 1 1第三个数 c: 0 0 1 1那么第一位上的汉明距离总和是0。为什么? 因为a、b、c该位全是"1",任意两个"1"的汉明距离是0,所以该位汉明距离总和是0。接下来看第二位,a的第二位是"0",b、c的是"1",此时该位的汉明距离就是2。为什么? 由上面我们可以得到,该位的"0"有1个,"1"有2个,而任意一个"0"都可以和任意一个"1"组合,一对组合可以产生的汉明距离为1,所以问题转换为了算多少对01组合,那么怎么计算呢?答案就是该位"0"的个数乘以"1"的个数。接下来看第三位,可以看出,此时"0"有2个,"1"有1个,所以可以产生的汉明距离为2。接下来看第四位,可以看出,此时"0"有2个,"1"有1个,所以可以产生的汉明距离为2。于是: 总的汉明距离就是 0 + 2 + 2 + 2 = 6

C++代码

class Solution {
public:int totalHammingDistance(vector<int>& nums) {if(nums.empty()) return 0;int res = 0;int len = nums.size();for(int i = 0; i < 30; i++){int oneCount = 0;int temp = 0;for(int j = 0; j < len; j++){oneCount += nums[j] & 1;    //统计每一数位上1的个数nums[j] >>= 1;             //考虑数的上一位temp += nums[j] == 0 ? 1 : 0;   //通过内层循环统计通过右移变为0的数的个数 当所有数都是0后(temp == len),后续就不需要继续了}res += oneCount * (len - oneCount);     //计算每一位的汉明距离if(temp == len) break;}return res;}
};

计算若干数据的汉明距离总和相关推荐

  1. 7-1 计算一组数据平均值、最大值、最小值 (12 分) 本题目要求读入一组数据,输出其平均值、最大值、最小值。 输入格式: 输入在一行中若干空格间隔的整数。 输出格式: 对每一组输入,在一行中

    7-1 计算一组数据平均值.最大值.最小值 (12 分) 本题目要求读入一组数据,输出其平均值.最大值.最小值. 输入格式: 输入在一行中若干空格间隔的整数. 输出格式: 对每一组输入,在一行中以空格 ...

  2. JS计算数组内数值的总和

    随手记录一下需求,返回的数据要计算NUM字段的数字总和 let nums = ['123','335','523'] //利用reduce方法直接计算 let result = nums.reduce ...

  3. 计算一组数据平均值、最大值、最小值 (12 分)

    7-1 计算一组数据平均值.最大值.最小值 (12 分) 本题目要求读入一组数据,输出其平均值.最大值.最小值. 输入格式: 输入在一行中若干空格间隔的整数. 输出格式: 对每一组输入,在一行中以空格 ...

  4. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均(Exponential Moving Average).例如,计算某公司的多个店铺每N天(5 ...

  5. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录

  6. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count).例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数 目录

  7. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录

  8. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum).例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和 目录

  9. pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值、滚动中位数、滚动最大最小值、滚动加和等

    pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值.滚动中位数.滚动最大最小值.滚动加和等 目录

最新文章

  1. 一个C#睡觉前的夜晚
  2. 后缀数组(SA)备忘
  3. 【数字信号处理】基于DFT的滤波系列2(含MATLAB代码)
  4. 20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行
  5. [Leedcode][JAVA][第4题][寻找两个正序数组中的中位数][二分查找][双指针]
  6. ElasticSearch 文档路由,你的数据到底存在哪一个分片上_06
  7. C++安全方向:(二)2.1 base16编解码原理讲解
  8. LEACH算法无线传感器网络路由协议
  9. html设置表格高宽的代码_设置html表格宽度
  10. 研究生看论文的看的是什么
  11. Qt 样式表、绘图事件设置渐变色
  12. netty源码解读六(内存池相关)
  13. kafka常见异常问题总结:KeepErrorCode = NoNode for...
  14. uniapp使用picker
  15. c++成员函数指针的本质
  16. 腾讯物联网系统TOS,内核移植起来比你想象的要简单
  17. 对js原型对象的理解
  18. web期末大作业 使用HTML+CSS制作蓝色版爱宠之家带留言板(5页)
  19. 数据结构笔记(期末复习,持续更新)
  20. 使用Everest和ACPI Patcher轻松生成dsdt.aml

热门文章

  1. 一个rshinyapp的学习视频就是2个小时,看来李刚民老师说的是对的,最重要的是快速学习一个语言并且实践的能力
  2. .net standard 2.0与 .net4.0之间的关系?
  3. C#new出来的结构体内存分配
  4. 央行官员:强化虚拟货币监管 遏制境外发币行为
  5. MIT与TI研究人员已打造出新型防黑RFID芯片
  6. Linux内核驱动之延时---内核超时处理【转】
  7. 【转】商业内幕(Business Insider)网站近期评出了全美20家最具创新力的科技创业公司...
  8. BCP utility in Sybase(Unix Environment)
  9. hdu-超级密码(BFS)
  10. 《软件需求》读后感03