less than 1 minute read

<-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;
        }
    }
};