a
⊕
0
=
a
a \oplus0 = a
a⊕0=a:任何数和0做异或运算,结果仍然是原来的数
a
⊕
a
=
0
a \oplus a = 0
a⊕a=0:任何数和其自身做异或运算,结果是0
a
⊕
b
⊕
a
=
b
⊕
a
⊕
a
=
b
⊕
(
a
⊕
a
)
=
b
⊕
0
=
b
a \oplus b \oplus a=b\oplus a\oplus a=b\oplus (a\oplus a)=b\oplus 0 = b
a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b:异或运算满足交换律和结合律
通过以上性质就可以在题目要求的时空复杂度下完成此算法
首先定义数字0(res)
然后用0去异或数组的每一个值(从头到尾)
所有重复的数字都被过滤掉了
遍历完后只剩下出现一次的元素
最后返回结果即可
七【题目提示】
1
<
=
n
u
m
s
.
l
e
n
g
t
h
<
=
3
∗
1
0
4
1 <= nums.length <= 3 * 10^4
1<=nums.length<=3∗104
−
3
∗
1
0
4
<
=
n
u
m
s
[
i
]
<
=
3
∗
1
0
4
-3 * 10^4 <= nums[i] <= 3 * 10^4
−3∗104<=nums[i]<=3∗104