在原数组上不用sort函数来进行这样的一块儿一块儿的排序。
大致思路:
因为题目明确说用不要开辅助空间,也就是要在原数组上进行操作。我第一反应是:两个指针fast和slow,果然,这是正确的!
因为题目说的场景也简单,直接手写一个例子,模拟快慢指针,找到规律,一次AC。
AC代码:
class Solution {
public:
void sortColors(int A[], int n) {
int slow=0;
int fast=0;
for(slow=0;slow<n;slow++)
{
for(fast=slow+1;fast<n;fast++)
{
if(A[fast]<A[slow])
swap(A,slow,fast);
}
}
}
void swap(int A[],int i,int j)
{
int temp=A[i];
A[i]=A[j];
A[j]=temp;
}
};