<-M 75> Sort Colors
// Method 1
class Solution {
public:
void sortColors(vector<int>& nums) {
int red = 0, blue = nums.size() - 1;
for (int i = 0; i < blue + 1;) {
switch(nums[i]) {
case 0:
swap(nums[i++], nums[red++]);
break;
default:
i++;
break;
case 2:
swap(nums[i], nums[blue--]);
break;
}
}
}
};
// Method 2
class Solution {
public:
void sortColors(vector<int>& nums) {
int check[3] = {0};
for(auto i : nums)
check[i]++;
int index = 0;
for(int i = 0; i != 3; i++) {
for(int j = check[i]; j != 0; j--)
nums[index++] = i;
}
}
};