Danh sách

Dồn số 0 về cuối mảng (Move Zeroes)

Dễ
Hai Con Trỏ & Cửa Sổ Trượt (Two Pointers & Sliding Window) 600ms 64MB

Cho một mảng các số nguyên nums. Hãy di chuyển tất cả các số 0 về cuối mảng, đồng thời giữ nguyên thứ tự tương đối của các phần tử khác 0.

Thao tác trực tiếp trên mảng (in-place) không sao chép sang mảng phụ.

Ví dụ 1:

Input: nums = [0, 1, 0, 3, 12]
Output: [1, 3, 12, 0, 0]
Định Dạng Đầu Vào (Input)
Một dòng chứa mảng các số nguyên nums
Định Dạng Đầu Ra (Output)
Mảng kết quả sau khi đã dồn các số 0 về cuối
Ràng Buộc (Constraints)
  • 1 <= nums.length <= 10^4
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
[0, 1, 0, 3, 12]
Output:
[1, 3, 12, 0, 0]
Giải thích: Đẩy 2 số 0 về cuối
Ví dụ 2:
Input:
[0]
Output:
[0]
Giải thích: Mảng 1 phần tử là 0
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

Kỹ thuật Two Pointers In-Place O(n)

Dùng con trỏ pos = 0 lưu vị trí đặt số khác 0 tiếp theo. Duyệt qua mảng, gặp số != 0 thì hoán đổi với vị trí pos rồi tăng pos++.

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
[0, 1, 0, 3, 12]
Kết quả kỳ vọng (Expected Output):
[1, 3, 12, 0, 0]
Dữ liệu đầu vào (Input):
[0]
Kết quả kỳ vọng (Expected Output):
[0]
Nhập STDIN của bạn (Mỗi dòng một tham số):

Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học