class Solution {
public:
    // void sortColors(vector<int>& nums) {
    //     int red=0,white=0,blue=0;
    //     for(int i=0; i<nums.size(); i++) {
    //         if(nums[i]==0)red++;
    //         else if(nums[i]==1)white++;
    //         else blue++;
    //     }
    //     for(int i=0; i<nums.size(); i++) {
    //         if(i<red)nums[i]=0;
    //         else if(i<red+white)nums[i]=1;
    //         else nums[i]=2;
    //     }
    // }
    void sortColors(vector<int>& nums) {
        int p0=0,p1=0; //用于交换0和1

        for(int i=0; i<nums.size(); i++) {
            if(nums[i] == 0) {
                swap(nums[i],nums[p0]);
                if(p0 < p1) {
                    swap(nums[i],nums[p1]);
                }
                p0++;
                p1++;
            } else if(nums[i] == 1) {
                swap(nums[i],nums[p1++]);
            }
        }
    }
};