Given an unsorted integer array, find the smallest missing positive integer. Note: Your algorithm should run in O(n) time and use constant extra space.
Sounds hard right?
var firstMissingPositive = function(nums) {
  if (nums.length <= 1)  return nums[0] == 1 ? 2 : 1;    
  const max = Math.max(...nums);
  for (let i = 1; i <= max + 1; i++) {
      if (!nums.includes(i)) return i;
      //alternatively: if (nums.indexOf(i) === -1) return i;
  }    
  return 1; //every other case, ie all n in nums are < 0
};
// Runtime: 48 ms, faster than 95.76% of JavaScript online submissions for First Missing Positive.
// Memory Usage: 33.8 MB, less than 91.67% of JavaScript online submissions for First Missing Positive.
 

 
    
Top comments (0)