给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色
思路:首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
void sortColors(int* nums, int numsSize){
int flag0=0;
int flag1=0;
int flag2=0;
for(int i=0;i<numsSize;i++){
if(nums[i]==0){
flag0++;
}else if(nums[i]==1){
flag1++;
}else{
flag2++;
}
}
for(int i =0;i<numsSize;i++){
if(flag0>0){
nums[i]=0;
flag0--;
continue;
}else if(flag0==0&&flag1>0){
nums[i]=1;
flag1--;
continue;
}else if(flag0==0&&flag1==0&&flag2>0){
nums[i]=2;
flag2--;
}
}
}