颜色分类
颜色分类
给定一个包含红色、白色和蓝色、共 n
个元素的数组 nums
,**原地** 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数 0
、 1
和 2
分别表示红色、白色和蓝色。
必须在不使用库内置的 sort 函数的情况下解决这个问题。
示例 1:
1 | 输入:nums = [2,0,2,1,1,0] |
示例 2:
1 | 输入:nums = [2,0,1] |
提示:
n == nums.length
1 <= n <= 300
nums[i]
为0
、1
或2
进阶:
- 你能想出一个仅使用常数空间的一趟扫描算法吗?
定义两个指针p0
,p2
,初始化为0
和n-1
,使用指针i
遍历整个数组,遇到0
交换到左边的区域,遇到2
交换到右边的区域。
所以在遍历过程中p0
左边是已经固定好的0
,p2
右边是已经固定好的2
.所以循环结束条件是i>p2
.
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 面试资料!