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

Python에서 중복 0

<시간/>

고정 길이의 정수 배열이 있다고 가정하고 0이 발생할 때마다 복제하고 나머지 요소를 오른쪽으로 이동해야 합니다.

원래 배열의 길이를 초과하는 요소는 기록되지 않습니다.

따라서 배열이 [1,0,2,3,0,4,5,0]과 같다고 가정하고 수정 후에는 [1,0,0,2,3,0,0,4]

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

  • arr을 다른 배열 arr2에 복사하고 i와 j를 0으로 설정
  • while i
  • arr2[i]가 0이면
    • arr[i] :=0
    • i를 1 증가
    • i <크기가 arr이면 arr[i] :=0
  • 기타 arr[i] :=arr2[j]
  • i와 j를 1씩 증가

예시

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

class Solution(object):
   def duplicateZeros(self, arr):
      arr2 = [i for i in arr]
      i=0
      j = 0
      while i < len(arr):
         if not arr2[j]:
            arr[i] = 0
            i+=1
            if i<len(arr):
               arr[i] = 0
         else:
            arr[i] = arr2[j]
         j+=1
         i+=1
      return arr
ob1 = Solution()
print(ob1.duplicateZeros([1,0,2,3,0,4,5,0]))

입력

[1,0,2,3,0,4,5,0]

출력

[1,0,0,2,3,0,0,4]