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
}