Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Di chuyển số 0 về cuối danh sách tại chỗ (In-place) trong Python


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 i từ 0 đến độ dài:
    • Nếu L[i] != 0: L[k] = L[i], k += 1.
  • Với j từ 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]