--- title: '268. Missing Number' description: Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array sidebar: label: 'Missing Number' badge: 'Easy' --- Array ::::warning Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity? :::: ### Example 1: - Input: `nums = [3,0,1]` - Output: `2` - Explanation: `n = 3` since there are `3` numbers, so all numbers are in the range `[0,3]`. `2` is the missing number in the range since it does not appear in `nums`. ### Example 2: - Input: `nums = [0,1]` - Output: `2` - Explanation: `n = 2` since there are `2` numbers, so all numbers are in the range `[0,2]`. `2` is the missing number in the range since it does not appear in `nums`. ### Example 3: - Input: `nums = [9,6,4,2,3,5,7,0,1]` - Output: `8` - Explanation: `n = 9` since there are `9` numbers, so all numbers are in the range `[0,9]`. `8` is the missing number in the range since it does not appear in `nums`. ### Constraints: - `n == nums.length` - `1 <= n <= 10^4` - `0 <= nums[i] <= n` - All the numbers of `nums` are unique. ## Approach ```mermaid flowchart TD S(["missingNumber(nums)"]) --> I["numSet = Set(nums), expectedCount = n + 1"] I --> L{"more i in 0..expectedCount-1?"} L -- yes --> Q{"numSet has i?"} Q -- no --> R(["return i"]) Q -- yes --> L L -- no --> E(["return -1"]) ``` ## Solution ```js /** * @param {number[]} nums * @return {number} */ var missingNumber = function(nums) { const numSet = new Set(nums); const expectedCount = nums.length + 1; for (let i = 0; i < expectedCount; i++){ if(!numSet.has(i)){ return i; } } return -1; }; ``` ## Explanation