LeetCode日常-简单-136. 只出现一次的数字
本文最后更新于:2020年9月27日 晚上
题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。不使用额外空间来实现。
1 |
|
1 |
|
自解
这次直接自解都写不出了,不用空间完全想不到。
官方解法
对于这道题,可使用异或运算⊕
。异或运算有以下三个性质。
- 任何数和
0
做异或运算,结果仍然是原来的数,即a⊕0=a
- 任何数和其自身做异或运算,结果是
0
,即a⊕a=0
- 异或运算满足交换律和结合律,即
a⊕b⊕a
=b⊕a⊕a
=b⊕(a⊕a)
=b⊕0=b
假设数组中有2m+1
个数,令a1,a2...am
为出现两次的m
个数,an
为出现一次的数。根据性质3
,数组中的全部元素的异或运算结果总是可以写成如下形式:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!