C++ 只出现一次的数字(二)
2021/12/31 9:07:23
本文主要是介绍C++ 只出现一次的数字(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
//给定一个整数数组,数组中有一个数出现了一次,其他数出现了三次,请找出只出现了一次的数。 //数据范围:数组大小满足1-10^5,数组中每个元素大小满足-2^31 - 2^31-1 //统计各个数的出现频率的方法 int singleNumber1(vector<int>& nums) { size_t length = nums.size(); unordered_map<int, int> buff(length); for (size_t i = 0; i < length; i++) { ++buff[nums[i]]; } for (auto p : buff) { if (p.second == 1) return p.first; } return 0; } //位统计操作方法 int singleNumber(vector<int>& nums) { vector<int> bitPos(32, 0);//统计每个bit位出现了多少次 int result = 0; for (size_t u = 0; u < nums.size(); ++u) { int num = nums[u]; //统计每个数不为0的bit位 for (int i = 0; i < 32; ++i) { if ((num & (1 << i)) != 0) { ++bitPos[i]; } } } for (int i = 0; i < 32; i++) { //如果该位出现的次数不为3的倍数,那么频数为1的值也有这个bit位 if (bitPos[i] % 3 != 0) { result += (1 << i); } } return result; }
这篇关于C++ 只出现一次的数字(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享