Cho danh sách nums, đưa tất cả số 0 về cuối danh sách bằng cách cập nhật tại chỗ (in-place). Thứ tự tương đối của các phần tử khác không đổi. Cố gắng giải quyết với không gian thêm O(1).
Ví dụ, [2,0,1,4,0,5,6,4,0,1,7] -> [2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0].
Các bước giải quyết:
- Nếu độ dài
L== 0, trả về danh sách rỗng. k := 0.- Duyệt
itừ 0 đến độ dài:- Nếu
L[i] != 0:L[k] = L[i],k += 1.
- Nếu
- Với
jtừkđến độ dài:L[j] = 0. - Trả về
L.
Ví dụ minh họa
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]