73. 数组中只出现一次的两个数字
异或运算,看视频吧。AcWing 73. 数组中只出现一次的两个数字
https://www.acwing.com/solution/acwing/content/1324/
假设这2个数为x,y
1.对所有数进行异或,相同的2个数执行异或后的值为0。结果就是x⊕y.
2.异或运算的性质:.若a是二进制数0101,b是二进制数1011;则a⊕b=1110 ,只有在两个比较的位不同时其结果是1,否则结果为0。
可以肯定的是,x⊕y的结果有某一位k是1。利用第k位是1,将数组分成2类数组,数组m是Z=1,另一数组n是Z=0。
x和y分别在m、n中。
3.对m、n中的元素分别进行异或,可以得到x,y.
class Solution { public: vector<int> findNumsAppearOnce(vector<int>& nums) { int sum = 0; for(auto x : nums) sum ^=x; int k = 0; while(!(sum>>k & 1))k++; //k中存的是x异或y中某一位是1的那位 int first = 0; for(auto x: nums) if(x>>k&1) first ^= x;//对第k位为1的集合进行异或,求出第一个出现一次的数字x return vector<int>{first,sum^first};//sum^first,求出第二个出现一次的数字y } };
带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)