您的位置:首页 > 其它

75. Sort Colors

2017-03-07 23:12 204 查看
直接暴力求解,查看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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: