Back to all solutions

#448 - Find All Numbers Disappeared in an Array

Problem Description

Given an array `nums` of `n` integers where `nums[i]` is in the range `[1, n]`, return an array of all the integers in the range `[1, n]` that do not appear in nums.

Solution

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findDisappearedNumbers = function(nums) {
  const result = [];

  for (let i = 0; i < nums.length;) {
    if (nums[nums[i] - 1] !== nums[i]) {
      [nums[nums[i] - 1], nums[i]] = [nums[i], nums[nums[i] - 1]];
    } else {
      i++;
    }
  }

  nums.forEach((v, i) => {
    if (v != i + 1) {
      result.push(i + 1);
    }
  });

  return result;
};