/*
* 与最右边的数比较,
* 小于的放在左边
* 大于的放在右边
* 等于的放在中间
*/
public static int[] netherlandsFlag(int[] arr, int L, int R){
if(L>R){
return new int[]{-1,-1};
}
if(L == R){
return new int[]{L,R};
}
int less = L-1;
int more = R;
int index = L;
while(index<more){
if(arr[index] == arr[R]){
index++;
}else if(arr[index] < arr[R]){
swap(arr,++less,index++);
}else if(arr[index] > arr[R]){
swap(arr,--more,index);
}
}
swap(arr,R,more);
return new int[]{less+1,more};
}