就是荷兰国旗问题,小于1的放在数组左边,等于1的放中间,大于1的放数组右边
class Solution {
public void sortColors(int[] nums) {
if(nums==null) return ;
int i=0;
int leftIndex=-1,rightIndex=nums.length;
while(i<rightIndex){
if(nums[i]>1){//等于2
swap(nums,i,--rightIndex);
}else if(nums[i]<1){//等于0
leftIndex++;
if(i!=leftIndex){
swap(nums,i,leftIndex);
}else{
i++;
}
}else{//等于1
i++;
}
}
}
public void swap(int[] nums,int i,int j){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
博客主要介绍荷兰国旗问题,即把数组中小于1的元素放在左边,等于1的放中间,大于1的放右边。涉及到数组元素的分区操作,属于信息技术领域的算法问题。
820

被折叠的 条评论
为什么被折叠?



