Cho một mảng nums gồm n đối tượng có màu đỏ (0), trắng (1) hoặc xanh (2). Hãy sắp xếp mảng in-place sao cho các đối tượng cùng màu đứng cạnh nhau theo thứ tự đỏ, trắng, xanh.
Yêu cầu: Một lần quét (One-pass) O(n) thời gian và O(1) bộ nhớ phụ, không dùng hàm sort có sẵn.
Ví dụ 1: nums = [2, 0, 2, 1, 1, 0] -> [0, 0, 1, 1, 2, 2]
Định Dạng Đầu Vào (Input)
Định Dạng Đầu Ra (Output)
Ràng Buộc (Constraints)
1 <= nums.length <= 300
Ví Dụ Kiểm Thử Mẫu
[2, 0, 2, 1, 1, 0]
[0, 0, 1, 1, 2, 2]
[2, 0, 1]
[0, 1, 2]
Thuật Toán Cờ Hà Lan (Dutch National Flag) O(n)
Dùng 3 con trỏ: low = 0, mid = 0, high = n - 1:
- Nếu nums[mid] == 0: Hoán đổi với low, tăng low++ và mid++.
- Nếu nums[mid] == 1: Tăng mid++.
- Nếu nums[mid] == 2: Hoán đổi với high, giảm high--.
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.



