public class Solution {
public void sortColors(int[] A) {
int head = 0;
int back = A.length - 1;
for (int i=0; i<A.length; ) {
if (i>back || i<head) break;
switch (A[i]) {
case 1:
i++;
break;
case 0:
swap(A, i, head);
i++;
head++;
break;
case 2:
swap(A, i, back);
back--;
break;
}
}
}
public void swap(int[] A, int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
1. Two pointers.
回复删除2. 如果0,和head换
如果1,继续
如果2,和back换