136. 只出现一次的数字 
给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例:
js
输入:nums = [4,1,2,1,2]
输出:4解题思路
- 位运算中,对任何数,都有 
x ^ x === 0;和x ^ 0 === x;- 2 个相同数字进行异或运算,结果为 0。
 - 任何数字和 0 进行异或运算,结果为数字本身。
 
 - 交换律 
(a ^ b) ^ c === a ^ (b ^ c);,异或计算顺序不影响最终结果。 
所以,遍历数组进行异或计算,重复的数字计算后为 0,最后剩下唯一一个不重复数字。
js
0 ^ 4; // 4
2 ^ 2; // 0
1 ^ 1; // 0参考答案
ts
function singleNumber(nums: number[]): number {
  let ans = 0;
  for (let i = 0; i < nums.length; ++i) {
    ans ^= nums[i];
  }
  return ans;
};