题目
分析
经典的荷兰国旗问题。
可以用三个指针,left,mid,right。left和right分别指向头和尾,mid指针在中间滑动。
mid指针滑到0的时候,就和left互换,left指针右滑。
滑到2的时候,就和right指针互换,right指针左滑。
代码
class Solution {
public:
void sortColors(vector<int>& nums) {
int i = 0,j = nums.size()-1,m;
while(nums[i] == 0)
i++;
while(nums[j] == 2)
j--;
m = i;
while(m <= j){
if(nums[m] == 0){
if(m != i)
swap(nums[m],nums[i]);
i++,m++;
}else if(nums[m] == 1){
m++;
}else{
swap(nums[m],nums[j]);
j--;
}
}
}
};
网友评论