解题思路:
设置3个指针,分别用于填充0、1、2
提交代码:
class Solution {
public void sortColors(int[] nums) {
int p0=0,p1=0,p2=0;
while(p2<nums.length) {
if(nums[p2]==0) {
nums[p2]=2;
nums[p1++]=1;
nums[p0++]=0;
}else if(nums[p2]==1) {
nums[p2]=2;
nums[p1++]=1;
}
else
nums[p2]=2;
p2++;
}
}
}
运行结果:

本文介绍了一种解决荷兰国旗问题的有效算法,通过使用三个指针p0、p1和p2来分别处理数组中的0、1、2元素,实现了原地排序,避免了额外的空间复杂度。此算法在遍历过程中不断调整指针位置,最终达到将数组按颜色排序的目的。
3234

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



