---
description: 換個想法快超級多，可以先從總和下去想
---

# # 268 Missing Number.

[LeetCode](https://leetcode.com/problems/missing-number/)

```
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, 
find the one that is missing from the array.
input: 一串數字陣列
output: 找出消失的那個
```

```
Example 1:

Input: [3,0,1]
Output: 2
Example 2:

Input: [9,6,4,2,3,5,7,0,1]
Output: 8
Note:
Your algorithm should run in linear runtime complexity. 
Could you implement it using only constant extra space complexity?

/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
    
};
```

### 怎麼解

第一個想法是先排序後前後比對，但這樣會用到  時間複雜度 Big O (n²)，\
其實可以先算出總長度，再減掉 input 就可以找到消失那個值！以 \[3, 0, 1] 來說，

* 我一開始就會知道 length  = 3，所以總和是 (1+3)\*3/2 = 6
* 6 - 3 - 0 - 1 = 2，所以是 2 消失了&#x20;

```
var missingNumber = function(nums) {
  let len = nums.length
  let correctSum = (1 + len)*len/2
  let currentSum = nums.reduce((a, b) => a + b);
  return correctSum - currentSum;
};
```
