The task is taken from LeetCode
Given an array containing n distinct numbers taken from
0, 1, 2, ..., n
, find the one that is missing from the array.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?
My approach is to subtract the sum from 0-n and the sum of the elements in the array. For the sum of the number from 0
to n
I use the Gauss forumula: (n * (n + 1)) / 2
. For the sum in the array I will have to iterate through the whole array and sum up the elements.
My solution has time complexity of \$O(n)\$ and space complexity of \$O(1)\$.
/**
* @param {number[]} nums
* @return {number}
*/
var missingNumber = function(nums) {
if (nums.length === 0) return -1;
const sumOfNums = nums.reduce((ac, x) => ac + x);
const sumTillN = (nums.length * (nums.length + 1)) / 2;
return sumTillN - sumOfNums;
};