1 class Solution 
 2 {
 3 public:
 4     void sortColors(vector<int>& nums) 
 5     {
 6         int sz=nums.size();
 7         vector<int> count(3,0);
 8         for(int i:nums)
 9             count[i]++;
10         int zero=count[0];
11         int one=count[1]+count[0];
12         for(int i=0;i<zero;i++)
13             nums[i]=0;
14         for(int j=zero;j<one;j++)
15             nums[j]=1;
16         for(int k=one;k<sz;k++)
17             nums[k]=2;
18     }
19 };

这个题元素比较少,可以用统计数量的方法来做,这里用的就是统计数量的方法

也可以用交换元素的方法来做,以1为基准,第一次扫描,把比1小的放到左边,第二次扫描,把比1大的放到右边

posted on 2018-07-21 13:08  高数考了59  阅读(122)  评论(0)    收藏  举报