/** * @param {number[]}nums * @return {number} */ var missingNumber = function (nums) { nums.sort((a, b) => a - b); let i = 0; let j = nums.length; while (i <= j) { if (i !== nums[i]) return i; if (j !== nums[j - 1]) return j; i++; j--; } };
位运算
原理: 对一个数进行两次完全相同的异或运算会得到原来的数,即:
1
a ^ b ^ b = a
1 2 3 4 5 6 7
var missingNumber = function (nums) { let result = nums.length; for (let i = 0; i < nums.length; i++) { result ^= i ^ nums[i]; } return result; };
高斯求和
1 2 3 4 5
var missingNumber = function (nums) { let result = nums.reduce((acc, cur) => acc + cur); result = (nums.length * (nums.length + 1)) / 2 - result; return result; };