Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue. We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively. You must solve this problem without using the library's sort function.
Example 1
Input: nums = [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
Explanation: There are two 0s, two 1s and two 2s. Grouping them in the order red (0), white (1), blue (2) gives [0,0,1,1,2,2].
Example 2
Input: nums = [2,0,1]
Output: [0,1,2]
Explanation: One of each colour, placed in order 0, 1, 2.
Example 3
Input: nums = [0]
Output: [0]
Explanation: A single element is already sorted.
We can do it in a single pass by maintaining three regions: a left zone of confirmed `0`s, a middle zone of confirmed `1`s, and a right zone of confirmed `2`s. Two pointers `lo` and `hi` mark the unsorted middle, and a cursor `i` walks through it placing each value in the right zone.
Run checks all cases above. Submit evaluates all test cases.