【剑指offer】登峰造极--数组中只出现一次的数字
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路:
位运算,异或思路,反正我是想不到…看了题解和评论才弄懂是怎么一回事。
按位与&,0&1=0 0&0=0 1&0=0 1&1=1
异或^,对位相加,但不进位 1^0=1 1^1=0 0^0=0 0^1=1
一个数与自己异或为0,一个数与0异或为自己
由于其它数字两两相同,所以所有数相互异或则得到这两个不同数的异或结果。
异或的结果有一位为1,这两个不相同的数在该位一个为0,一个为1。按照这个将数组分为两组,一组在该位为1,一组在该位为0,这两个不同数字分别在这两组内。
将两组内的数凉凉异或,因为相同的数会抵消掉,得到的结果就是这两个不同的数。
class Solution {public:void FindNumsAppearOnce(vector<int> nums,int* num1,int *num2) {int ret = 0;for(auto n : nums){ret ^= n;}//找为一得位置int div = 1;while((div & ret) == 0){div <<= 1;//左移找一}int a = 0, b = 0;for(auto n : nums){if(div & n){a = a^n;}}b = a ^ ret;*num1 = a;*num2 = b;}
};
【剑指offer】登峰造极--数组中只出现一次的数字相关推荐
- 剑指offer:数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 解题思路 用容器存次数. class Solution { public:void FindNu ...
- 《剑指offer》--- 数组中只出现一次的数字
本文算法使用python3实现 1. 问题 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 时间限制:1s:空间限制:32768K 2 思路描述 ...
- 《剑指offer》-数组中只出现一次的数字
/* 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.思路: 如果是只有一个数字出现一次,那么所有数字做异或就得到结果: 现在有两个数字x,y分别出现一次, ...
- 《剑指offer》数组中只出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 解析:直接用set集合去重,每个集合的元素都去原数组array里找,出现一次就保存下 //num1, ...
- 剑指Offer之数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 先对数组进行排序,然后再进行线性统计,时间复杂度是O(NlogN)O(N\log ...
- 【LeetCode】剑指 Offer 51. 数组中的逆序对
[LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...
- 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
[LeetCode]剑指 Offer 56. 数组中数字出现的次数 文章目录 [LeetCode]剑指 Offer 56. 数组中数字出现的次数 package offer;import java.u ...
- 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...
- java中数组的下标比较_【Java】 剑指offer(53-3) 数组中数值和下标相等的元素
本文参考自<剑指offer>一书,代码采用Java语言. 题目 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实现一个函数找出数组中任意一个数值等于其下标的元素.例如,在数 ...
- 剑指 Offer 39. 数组中出现次数超过一半的数字
剑指 Offer 39. 数组中出现次数超过一半的数字https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban ...
最新文章
- iphonex黑屏开不了机_iphonexr黑屏,iphonexr突然开不了机
- python连接memcached
- 光脚丫学LINQ(005):数据表之间的联接查询
- Dalvik线程模型
- 特定视图呈现时发生的事件顺序
- 怎么学好python leetcode的题目太难了_为什么leetcode中的python解法过于pythonic,而忽略了算法题主要关注的复杂度问题?...
- 光山二高2021高考成绩查询,光山县第二高级中学2019高考成绩和历年成绩汇总
- 2020 cr节目源_2020年四款最新直播软件汇总,频道多,画质流畅节目源超级稳定!...
- 聚类分析的Matlab 程序—系统聚类(附有案例分析)
- Excel如何实现随机抽取
- 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...
- JobTracker作业启动过程分析
- 微信上传临时素材|微信公众号发送图片
- angular烂笔头
- CTrackThread::PreTranslateMessage(MSG* pMsg)
- 使用bootstrap实现freeCodeCamp上Build a Personal Portfolio Webpage
- 【观察】揭秘:中信银行信用卡新核心系统自研之路
- java实现交叉报表_交叉填报表的制作
- 小鲨鱼在51nod小学
- 为什么要学习 Python?这是我听过最实用的答案
热门文章
- 18.自定义标签及模板中的使用【由浅入深】
- 用备忘录写下想法 帮自己记录灵感
- c++11 std::enable_if在模板偏特化的妙用
- 聚类算法评价指标python实现_[ML] 聚类评价指标
- [jvm]频繁full gc怎么优化
- 首次提出数据权!!《深圳经济特区数据条例(征求意见稿)》全文
- 正则表达式匹配正负小数以及整数
- 合作模式歌利亚机器人_歌利亚全任务流程图文攻略_歌利亚通关攻略_牛游戏网攻略...
- strncpy使用缺陷
- 系统没有“internet信息服务(IIS)管理器”