https://leetcode.com/problems/sort-colors/description/
3 pointers algorithem

class Solution {
public:
void sortColors(vector<int>& nums) {
int n = nums.size();
int s = 0, e = n-1;
int mid = 0;
while(mid >= s && mid <= e){
if (nums[mid] == 0){
swap(nums[mid],nums[s]);
s++;
mid++;
} else if (nums[mid] == 2){
swap(nums[mid],nums[e]);
e--;
} else {
mid++;
}
}
}
};