https://leetcode-cn.com/problems/missing-number/
描述
给定一个包含 0, 1, 2, ..., n
中 n_n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
说明:
你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?
分析
最容易理解得是直接遍历看index是否在数组中。
var missingNumber = function(nums) {
let len = nums.length
for (let i = 0;i < len;i++) {
if (nums.indexOf(i) === -1) {
return i
}
}
return len
};
最简单的是等差数列求和,减去数组的和,就是缺的值
数组的求和使用了reduce迭代方法。
var missingNumber = function(nums) {
let len = nums.length
return (1 + len) * len / 2 - nums.reduce((acc, curr) => acc + curr)
};
参考资料
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce