IT/알고리즘

코딜리티 - MissingInteger (javascript)

반응형

Task description

 

This is a demo task.

Write a function:

 

function solution(A);

 

that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A.

 

For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5.

Given A = [1, 2, 3], the function should return 4.

Given A = [−1, −3], the function should return 1.

Write an efficient algorithm for the following assumptions:

 

  • N is an integer within the range [1..100,000];
  • each element of array A is an integer within the range [−1,000,000..1,000,000].

 

풀이

 

function solution(A) {
  A = [...new Set(A)].filter(v => v > 0).sort((a, b) => a - b);

  if (A.length == 0) return 1;

  for (let i = 0; i < A.length; ++i) {
   if (A[i] != i + 1) return i + 1;
   if (i == A.length - 1) return i + 2;
  }
}

 

Detected time complexity:O(N) or O(N * log(N))

반응형