一. 题目
二. 思路
1. 计数
统计数量,然后赋值。
两次遍历。
2. 单指针
3. 双指针1
4. 双指针2
三. 代码
3. 双指针1
class Solution
{
void swap(int[] nums, int x, int y)
{
int temp = nums[x];
nums[x] = nums[y];
nums[y] = temp;
}
public void sortColors(int[] nums)
{
int p0 = 0, p1 = 0;
for (int i = 0; i < nums.length; ++i)
if (nums[i] == 1) swap(nums, p1++, i);
else if (nums[i] == 0)
{
swap(nums, p0, i);
if (p0 < p1) swap(nums, p1, i);
++p0;
++p1;
}
}
}