给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。
我们可以使用整数 0,1 和 2 分别代表红,白,蓝。
注意事项
不能使用代码库中的排序函数来解决这个问题。
排序需要在原数组中进行。
class Solution {
public:
/*
* @param nums: A list of integer which is 0, 1 or 2
* @return: nothing
*/
void sortColors(vector<int> &nums) {
// write your code here
int sum1=0,sum2=0;
int test,sum=0;
for(int i=0;i<nums.size();i++){
sum++;
if(nums[i]==0){
test=nums[i];
nums.erase(nums.begin()+i);
nums.insert(nums.begin(),test);
sum1++;
}else if(nums[i]==1){
test=nums[i];
nums.erase(nums.begin()+i);
nums.insert(nums.begin()+sum1,test);
}else{
test=nums[i];
nums.erase(nums.begin()+i);
nums.insert(nums.end(),test);
i--;
}
if(sum==nums.size()){
return ;
}
}
}
};