异或的用法
异或的性质
1.异或的本质是 无进位相加->相同为0,不同为1
2.异或的性质 a^a=0, a^0=a 以及交换律,结合率
异或的新用法:
1.不占用额外空间的交换位置a<->b
a=a^b;
b=a^b;
a=a^b;
2.一个数组中一个数出现奇数次,其他数出现偶数次,通过异或找到该奇数次的数
[伪代码]
a[n];
auto eor=0;
for(i from 0 to n)eor=eor^a[i];
因为交换律和结合律,偶数次的数经过异或后结果是0,最终表达式为奇数次的数an^0=an
3.一个数组中两个数出现奇数次,其他数出现偶数次,也可以通过异或找到该奇数次的数(进阶)
原理:
筛选数:
如何得到eof`?
[伪代码]
a[n];
int eor=0,eor`=0;
for(i from 0 to n)eor=eor^a[i];
int RightOne= eor&(~eor+1);//得到一个筛选数,该数可以筛选出第X位为1的数
for(int cur:a[n])
if(a[n]&RightOne!=0)eor`=(eor`)^a[n];//此时第X为1的数被异或进eor`,但偶数次数的相抵消为0,eor`存的是a或者b中第X位为1的那个数
eor=eor^eor`;//a^b^a=b,另一个数.即eor和eor`分别保存了两个次数为1的数
我是一个还没有想好写点啥的小尾巴
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧