颜色分类
颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,**原地** 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
必须在不使用库内置的 sort 函数的情况下解决这个问题。
示例 1:
1 | 输入:nums = [2,0,2,1,1,0] |
示例 2:
1 | 输入:nums = [2,0,1] |
提示:
n == nums.length1 <= n <= 300nums[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 许可协议。转载请注明来自 面试资料!