异或运算交换律以及结合律。
概念
如果我们对 0 和二进制位做 XOR 运算,得到的仍然是这个二进制位
a \oplus 0 = aa⊕0=a
如果我们对相同的二进制位做 XOR 运算,返回的结果是 0
a \oplus a = 0a⊕a=0
XOR 满足交换律和结合律
a \oplus b \oplus a = (a \oplus a) \oplus b = 0 \oplus b = ba⊕b⊕a=(a⊕a)⊕b=0⊕b=b
所以我们只需要将所有的数进行 XOR 操作,得到那个唯一的数字。
class Solution {
public:
int singleNumber(vector<int>& nums) {
if(nums.size() <= 1) return nums[0];
int k = nums[0];
for(int i = 1; i < nums.size(); i++) k = nums[i] ^ k;
return k;
}
};
本文深入探讨了异或(XOR)运算的基本概念,包括其交换律和结合律的特性,以及如何利用这些特性在编程中寻找唯一元素。通过具体的代码示例,展示了在一组重复数字中找到唯一数字的高效算法。
721

被折叠的 条评论
为什么被折叠?



