class Solution{
public:
    /**
     * @param nums: A list of integer which is 0, 1 or 2 
     * @return: nothing
     */    
    void sortColors(vector<int> &nums) {
        // write your code here
        int size = nums.size();
        if (size == 0) {
            return;
        }

        int start = 0;
        int end = size - 1;
        int cur = 0;

        while (cur <= end) {
            while (cur <= end && nums[cur] == 1) {
                cur++;
            }
            if (cur <= end && nums[cur] == 0) {
                swapElements(nums, cur, start);
                start++;
                cur++;
            } else if (cur <= end && nums[cur] == 2) {
                swapElements(nums, cur, end);
                end--;
            }
        }

        return;
    }

    void swapElements(vector<int>& nums, int index1, int index2) {
        int tmp = nums[index1];
        nums[index1] = nums[index2];
        nums[index2] = tmp;
        return;
    }
};

results matching ""

    No results matching ""