1. 程式人生 > >[leetcode]缺失數字[javascript]

[leetcode]缺失數字[javascript]

https://leetcode-cn.com/problems/missing-number/

描述

給定一個包含 0, 1, 2, ..., nn_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