知识点:数组+排序
方法:只针对本题nums元素为0,1,2的特殊性,先分别统计0,1,2的个数;再赋值
C++实现:
class Solution {//排序
public:
void sortColors(vector<int>& nums) {
int count[3]={0},t=0;//定义整形数组并初始化0,count = [0,0,0]
for(int i=0;i<nums.size();++i) count[nums[i]]++; //以nums=[2,0,2,1,1,0]为例,count[0] = 2,count[1]=2,count[2]=2
for(int i=0;i<=2;++i)
for(int j=0;j<count[i];++j)
{
nums[t++]=i;//i=0,nums[0]=0,nums[1]=0;count[0]=2, t=2
//i=1,nums[2]=1,nums[3]=1;count[1]=2, t=4
//i=2,nums[4]=2,nums[5]=2;count[2]=2, t=6
}
}
};