고정 길이의 정수 배열이 있다고 가정하고 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씩 증가
- arr2[i]가 0이면
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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]