0075. Sort Colors
Description
**Input:** nums = [2,0,2,1,1,0]
**Output:** [0,0,1,1,2,2]**Input:** nums = [2,0,1]
**Output:** [0,1,2]**Input:** nums = [0]
**Output:** [0]**Input:** nums = [1]
**Output:** [1]ac
Last updated
**Input:** nums = [2,0,2,1,1,0]
**Output:** [0,0,1,1,2,2]**Input:** nums = [2,0,1]
**Output:** [0,1,2]**Input:** nums = [0]
**Output:** [0]**Input:** nums = [1]
**Output:** [1]Last updated
// 1.counting sort; 2. two pass quick select; 3. special partition
// important** for loop, go through each loop; while loop, pass some steps. note the difference.
class Solution {
public void sortColors(int[] nums) {
// edge cases
if (nums.length < 2) return;
// left, right. i walks, if 0 swap to left, if 2 swap to right.
// while i < right
int l = 0, r = nums.length - 1;
for (int i = 0; i <= r; i++) {
while (nums[i] == 2 && i < r) {
swap(nums, i, r);
r--;
}
while (nums[i] == 0 && i > l) {
swap(nums, l, i);
l++;
}
}
}
private void swap(int[] nums, int x, int y) {
int tmp = nums[x];
nums[x] = nums[y];
nums[y] = tmp;
}
}