筛去重复元素
最近发现这样一道题,大致意思是给定一个数组,其中元素仅有一个只出现一次,其余元素均出现两次,编写程序以找出这个数。
这里可以用到异或运算。
异或运算法则如下:
交换律:A ^ B = B ^ A
结合律:A ^ (B ^ C) = (A ^ B) ^ C
恒等律:X ^ 0 = X
归零律:X ^ X = 0
自反:A ^ B ^ B = A ^ 0 = A
这里主要用到后三条性质,可以定义变量key,不断与数组元素进行异或运算,某种意义上达到对于数组的压缩储存。
代码实现如下:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 全之の博客!
