class Solution{
public:
void sortColors(vector<int> &nums) {
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;
}
};