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

Python에서 0을 목록 끝으로 제자리 이동

<시간/>

숫자 nums의 목록이 있다고 가정하고 목록을 제자리에서 업데이트하여 목록의 끝에 모든 0을 넣어야 합니다. 그리고 다른 요소들의 상대적인 순서는 바뀌지 않아야 합니다. 우리는 이것을 O(1) 추가 공간에서 해결하려고 노력해야 합니다.

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

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

  • L의 크기가 0과 같으면
    • 빈 목록 반환
  • k :=0
  • 0~L 크기 범위의 i에 대해
    • L[i]가 0과 같지 않으면
      • L[k] :=L[i]
      • k :=k + 1
  • k 범위에서 L 크기까지의 j에 대해 다음을 수행합니다.
    • L[j] :=0
  • 반환 L

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

class Solution:
   def solve(self, L):
      if len(L) == 0:
         return []
         k = 0
         for i in range(len(L)):
            if L[i] != 0:
               L[k] = L[i]
               k+=1
         for j in range(k,len(L)):
            L[j] = 0
         return L
ob = Solution()
L = [2,0,1,4,0,5,6,4,0,1,7]
print(ob.solve(L))

입력

[2,0,1,4,0,5,6,4,0,1,7]

출력

[2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]