相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
public void sortColors(int[] nums) {
if(nums==null || nums.length==1){
return;
}
// all in [0, p0) = 0 0的区间
// all in [p0, i) = 1。1的区间
// all in [p2, len - 1] = 2。2的区间
int p0 = 0;//0的个数下标
int p2 = nums.length-1;2的个数下标
int i = 0;
while (i <= p2){
if (nums[i] == 0){//当==0时
swpn(nums,i,p0);//交换位置
p0++;//把p0+1,记录如果有下一个0,就放在p0下标,p2一直指向最后一个0的位置
i++;
}else if (nums[i]==2){//当==2时
swpn(nums,i,p2);//交换位置
p2--;//把p2-1,记录如果有下一个2,就放在p2下标,p2一直指向第一个2的位置
}else {//当nums[i]==1时
i++;//不用交换位置,只需要往下遍历
}
}
}
public void swpn(int[] nums,int left,int right){
int temp =nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}