Skip to content

[Leetcode] 41. First Missing Positive ​

Problem ​

문제링크

정렬되지 않은 숫자 배열에서 가장 작은 배열에 없는 양의 수를 구하여라.

Solution ​

  1. 배열의 양의 숫자만 남도록, 오름차순으로 정렬한다.
  2. 제일 처음 요소가 1이 아니라면 1을 리턴
  3. cnt값을 1로 시작해서 배열을 순회하면서 cnt값도 함께 올려주면서 체크한다.
    • 이때 중복된값이 연속으로 등장할수 있는 조건을 추가해준다.

JS Code ​

js
/**
 * @param {number[]} nums
 * @return {number}
 */
var firstMissingPositive = function (nums) {
  const positiveNums = nums.sort((a, b) => a - b).filter((item) => 0 < item)
  let cnt = 1
  if (positiveNums[0] !== 1) return 1
  for (const positiveNum of positiveNums) {
    if (cnt === positiveNum) continue
    if (++cnt === positiveNum) continue
    return cnt
  }
  return cnt+1
}