只出现一次的数字

解题思路:

  1. 异或运算有以下三个性质:

    • 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0 = a;
    • 任何数和其自身做异或运算,结果是 0,即 a⊕a = 0;
    • 异或运算满足交换律和结合律,即 a⊕b⊕a = b⊕a⊕a = b⊕(a⊕a) = b⊕0 = b;
  2. 例如 nums = [1,1,2,3,3],即1⊕1⊕2⊕3⊕3 = (1⊕1)⊕2⊕(3⊕3)= 0 ⊕ 2 ⊕ 0 = 2;

复杂度:

  1. 时间复杂度:O(n),其中 n 是数组长度,只需要对数组遍历一次;

  2. 空间复杂度:O(1);

代码实现:

```JS
var singleNumber = function (nums) {
  let res = 0;

  nums.forEach(num => {
    res ^= num;
  })

  return res;
};
```
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 只出现一次的数字
  2. 2. 解题思路:
  3. 3. 复杂度:
  4. 4. 代码实现: