直接暴力求解,查看discuss,通过twoPoint的方式,实现一次遍历就可以求出解,好厉害。
左边记录0所在的位置point1,右边记录2所在的位置point2。
- 遇到1时不处理
- 遇到2时,交换,将2放在point2的左边,point2–。
- 遇到0时,交换,将0放在point1的右边,point1++。
特例:
会于遇到,情况2,在交换的时候把0交换到中间来,需要再处理一次情况3。
class Solution {
public:
void sortColors(vector<int>& nums) {
int count0=0;
int count1=0;
int count2=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==0)
count0++;
else if(nums[i]==1)
count1++;
else
count2++;
}
for(int i=0;i<count0;i++)
nums[i]=0;
for(int i=0;i<count1;i++)
nums[count0+i]=1;
for(int i=0;i<count2;i++)
nums[count0+count1+i]=2;
}
};