Menu
CoddyTech

Sort Colors

Bạn nhận được một mảng nums, trong đó mỗi giá trị là 0, 1 hoặc 2, tương ứng với ba màu như đỏ, trắng và xanh dương. Hãy sắp xếp lại mảng sao cho tất cả số 0 đứng trước, tiếp theo là tất cả số 1, rồi đến tất cả số 2, sau đó trả về mảng. Hãy giải bài này mà không dùng hàm sắp xếp của thư viện.

Hàm

sortColors(nums: integer-array) → integer-array
numsinteger-array
các màu sắc, mỗi màu có giá trị 0, 1 hoặc 2
Trả vềinteger-array
các giá trị giống nhau, với tất cả số 0 trước, rồi đến tất cả số 1, sau đó là tất cả số 2

Ràng buộc

  • 1 ≤ nums.length ≤ 1.5 × 104
  • Mỗi nums[i] đều là 0, 1 hoặc 2.
  • Có thể thiếu một màu, và mảng có thể chỉ chứa một màu.

Ví dụ

Đầu vào
nums = [2, 1, 0, 2, 0, 1, 1]
Đầu ra
[0, 0, 1, 1, 1, 2, 2]
Giải thích
Mảng chứa hai số 0, ba số 1 và hai số 2, vì vậy kết quả đúng như vậy: hai số 0, tiếp theo là ba số 1, rồi đến hai số 2.
challenge icon

Câu hỏi mở rộng

Nếu có k màu thay vì ba màu, với k nhỏ hơn nhiều so với độ dài của mảng, bạn sẽ thay đổi điều gì?

Đặt lại code
def sortColors(nums):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [2, 1, 0, 2, 0, 1, 1]

Đầu ra mong đợi

[0, 0, 1, 1, 1, 2, 2]