class ThreeColor {
public:
vector<int> sortThreeColor(vector<int> A, int n) {
// write code here
int left=0;
int right=n-1;
for(int i=0;i<n&&i<=right;i++)
{
if(A[i]==1)
{
continue;
}
else if(A[i]==0)
{
swap(A[i],A[left]);
left++;
}
else
{
swap(A[i],A[right]);
i--;
right--;
}
}
return A;
}
};
public:
vector<int> sortThreeColor(vector<int> A, int n) {
// write code here
int left=0;
int right=n-1;
for(int i=0;i<n&&i<=right;i++)
{
if(A[i]==1)
{
continue;
}
else if(A[i]==0)
{
swap(A[i],A[left]);
left++;
}
else
{
swap(A[i],A[right]);
i--;
right--;
}
}
return A;
}
};

本文介绍了一个高效的三色排序算法实现,该算法通过一次遍历将包含0、1、2三种颜色的数组按顺序排列。使用两个指针分别从数组两端向中间移动,遇到0则与最左侧未确定颜色的元素交换并移动左指针;遇到2则与最右侧未确定颜色的元素交换并移动右指针;遇到1则直接跳过。

1009

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



