感觉就是排序问题?我使用的是时间复杂度比较高的简单粗暴排序法,时间复杂度O(n^2)。
class Solution {
public:
void sortColors(vector<int>& nums) {
int n=nums.size();
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(nums[j]<nums[i]){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
}
};
使用双指针的话就是先将双指针都定在0的位置,遍历数组,若为0则与指针0换位置,两指针前移一步,若为1则与指针1换位置,将指针1前移一步,若为2则continue。