问题描述
Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue.
We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively.
Example 1:
1 | Input: nums = [2,0,2,1,1,0] |
Example 2:
1 | Input: nums = [2,0,1] |
Example 3:
1 | Input: nums = [0] |
Example 4:
1 | Input: nums = [1] |
Constraints:
- n == nums.length
- 1 <= n <= 300
- nums[i] is 0, 1, or 2.
Follow up:
- Could you solve this problem without using the library’s sort function?
- Could you come up with a one-pass algorithm using only O(1) constant space?
解题思路
- 分为0,1,2三种情况,0从memo的头部插入,1从memo尾部插入,同时都将这几个元素从nums中删除
- 最后将memo和nums组合起来即可
代码如下:
JavaScript
1 | /** |
- 时间复杂度:O(n)
- 空间复杂度:O(n)