思路
做了前置题,一个很显然的做法是正反扫两遍,第一遍正着扫,把0放到数组前缀。 第二遍反着扫,把2放到数组后缀。
这里我们用一个动画来为大家演示👇
给定一个包含红色、白色和蓝色,共 n 个元素的数组 nums。
请你原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色的顺序排列。
我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。
要求必须在不使用库内置排序函数的情况下解决该问题。
第一行输入一个整数 n,表示数组 nums 的长度。
第二行输入 n 个整数,表示数组 nums 中的元素。
数组中的元素只可能是 0、1 或 2。
输出排序后的数组 nums。
相邻两个整数之间用一个空格隔开。
6
2 0 2 1 1 0
0 0 1 1 2 2
3
2 0 1
0 1 2
n==nums.length
1<=n<=300
nums[i] 的值为 0、1 或 2