Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 1에서 N까지 누락된 모든 숫자를 찾는 프로그램

<시간/>

목록의 모든 숫자가 간격 [1, n]에 있는 크기 n의 숫자라고 하는 숫자 목록이 있다고 가정합니다. 일부 요소는 두 번 나타날 수 있고 다른 요소는 한 번만 나타날 수 있습니다. 목록에 없는 [1, n]의 모든 숫자를 찾아야 합니다. 오름차순으로 정렬된 숫자를 반환해야 합니다. 선형 시간과 일정 공간이 필요한 솔루션을 찾아야 합니다.

따라서 입력이 [4, 4, 2, 2, 6, 6]과 같으면 출력은 [1, 3, 5]가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • arr :=nums + 1 크기의 배열, 0으로 채움
  • 숫자 단위의 각 i에 대해 다음을 수행합니다.
    • arr[i] :=arr[i] + 1
  • 누락됨 :=새 목록
  • 0에서 arr 크기의 범위에 있는 i에 대해
    • arr[i]가 0과 같고 i가 0과 같지 않으면
      • 결측 끝에 i 삽입
  • 반품 누락

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, nums):
      arr = [0]*(len(nums)+1)
      for i in nums:
         arr[i] += 1
      missing = []
      for i in range(len(arr)):
         if arr[i] == 0 and i != 0:
            missing.append(i)
      return missing
ob = Solution()
print(ob.solve([4, 4, 2, 2, 6, 6]))

입력

[4, 4, 2, 2, 6, 6]

출력

[1, 3, 5]