欧美受阻、宏观震荡?2026 全球 IT 人才正在涌入这座“新硅谷”
2026/5/4 0:31:02
异或运算(^)在算法题中有四大核心性质,掌握后可以快速解决多类问题:
核心性质
a ^ a = 0(相同数异或为0)a ^ 0 = a(与0异或不变)a ^ b = b ^ a(a ^ b) ^ c = a ^ (b ^ c)适用条件:数组中只有一个元素出现奇数次,其余都出现偶数次
原理:所有元素异或后,成对的自动抵消为0,最终剩下目标值
入门题目:
适用条件:数组中有两个元素只出现一次,其余都出现两次
思路:先全体异或得到x = a ^ b,找到x中任意为1的位(表示a,b在该位不同),按此位将数组分为两组分别异或
进阶题目:
原理:利用异或实现无进位加法,与运算实现进位
典型应用:
小技巧:
x ^= 1可在0和1之间切换(等价于!x)x ^ 1可判断奇偶(比%2更快)经典三行代码,无需临时变量:
a^=b;b^=a;a^=b;| 序号 | 题目 | 难度 | 核心考点 | 链接 |
|---|---|---|---|---|
| 1 | 只出现一次的数字 | ★☆☆☆☆ | 基础异或 | LeetCode 136 |
| 2 | 丢失的数字 | ★☆☆☆☆ | 索引异或 | LeetCode 268 |
| 3 | 数组异或操作 | ★☆☆☆☆ | 模拟异或 | LeetCode 1486 |
| 4 | 两整数之和 | ★★☆☆☆ | 位运算加法 | LeetCode 371 |
| 5 | 只出现一次的数字 III | ★★★☆☆ | 分组异或 | LeetCode 260 |
| 6 | 使数组异或和为零 | ★★★☆☆ | 动态规划+异或 | LeetCode 1787 |
| 7 | 黑板异或游戏 | ★★★★☆ | 博弈论+异或 | LeetCode 810 |
| 8 | 子数组异或查询 | ★★☆☆☆ | 前缀异或 | LeetCode 1310 |
建议从LeetCode 136开始,配合题解区的高赞分析,逐步建立位运算思维!