Giả sử chúng ta có một danh sách các số num, chúng ta phải đặt tất cả các số không vào cuối danh sách bằng cách cập nhật danh sách tại chỗ. Và thứ tự tương đối của các phần tử khác không được thay đổi. Chúng ta phải cố gắng giải quyết vấn đề này trong O (1) không gian bổ sung.
Vì vậy, nếu đầu vào là [2,0,1,4,0,5,6,4,0,1,7], thì đầu ra sẽ là [2, 1, 4, 5, 6, 4, 1 , 7, 0, 0, 0]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- nếu kích thước của L bằng 0, thì
- trả lại một danh sách trống
- k:=0
- đối với tôi trong phạm vi từ 0 đến kích thước là L, thực hiện
- nếu L [i] không giống 0, thì
- L [k]:=L [i]
- k:=k + 1
- nếu L [i] không giống 0, thì
- đối với j trong phạm vi k đến kích thước là L, thực hiện
- L [j]:=0
- trả về L
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[2,0,1,4,0,5,6,4,0,1,7]
Đầu ra
[2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]