颜色分类
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
p0,p1 = 0,0
for index in range(len(nums)):
if nums[index] == 0:
nums[p0],nums[index] = nums[index],nums[p0]
if p0 < p1:
nums[index],nums[p1] = nums[p1],nums[index]
p0 += 1
p1 += 1
elif nums[index] == 1:
nums[p1],nums[index] = nums[index],nums[p1]
p1 += 1
class Solution {
public:
void sortColors(vector<int>& nums) {
int p1 = 0, p2 = 0;
for(int i = 0; i < nums.size(); ++i){
if(nums[i] == 1){
swap(nums[i], nums[p2]);
++ p2;
}else if(nums[i] == 0){
swap(nums[i], nums[p1]);
if(p1 < p2){
swap(nums[i], nums[p2]);
}
++ p1;
++ p2;
}
}
}
};