83 颜色分类-三指针解决

2023-12-30 16:34:40

问题描述:给定一个包含红色、白色、蓝色,一共n个元素的数组,原地对他们进行排序,使得相同并颜色的颜色相邻,并按照红色、白色、蓝色顺序排列,在此题中使用整数0、1、2分别表示红色、白色和蓝色。

三指针求解:本题要求所有的0放在左边,所有的3放在右边,所以可以定义一个start和end指针,指向0和3的位置,并用index进行遍历,如果index为0,则与start位置进行交换,如果index=3则域end位置进行交换,直到index位置为2,这时index前移。

public void swap(int[]nums,int start,int end)
{
int temp=nums[start];
nums[start]=nums[end];
nums[end]=tem0;
}|
public int[]change(int []nums)
{
int start=0;
int end=nums.length;
int index=1;
while(start<index<end)
{
while(nums[index]==2)
{
if(nums[index]==1)
{
swap(nums,index,start);
start++;
}else if(nums[index]==3)
{
swap(nums,index,end);
end--;
}
}
index++
}
???????return nums;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135305250
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。