只出现一次的数字
解题思路:
-
异或运算有以下三个性质:
- 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0 = a;
- 任何数和其自身做异或运算,结果是 0,即 a⊕a = 0;
- 异或运算满足交换律和结合律,即 a⊕b⊕a = b⊕a⊕a = b⊕(a⊕a) = b⊕0 = b;
-
例如 nums = [1,1,2,3,3],即1⊕1⊕2⊕3⊕3 = (1⊕1)⊕2⊕(3⊕3)= 0 ⊕ 2 ⊕ 0 = 2;
复杂度:
-
时间复杂度:O(n),其中 n 是数组长度,只需要对数组遍历一次;
-
空间复杂度:O(1);
代码实现:
```JS
var singleNumber = function (nums) {
let res = 0;
nums.forEach(num => {
res ^= num;
})
return res;
};
```
231.2 的幂
上一篇