[LeetCode] Sort Colors

简介: The hints on below the problem have suggested a two-pass solution. Now I will focus on the one-pass solution.

The hints on below the problem have suggested a two-pass solution.

Now I will focus on the one-pass solution.

The one-pass solution has no mystery. Just swap all 0's to the left and all 2's to the right and the 1's will automatically fall in the middle.

Now comes the following code. You may play with it using some examples on a paper to see how it works.

1     void sortColors(vector<int>& nums) {
2         int red = 0, blue = nums.size() - 1;
3         for (int i = 0; i <= blue; i++) {
4             while (nums[i] == 2 && i < blue)
5                 swap(nums[i], nums[blue--]);
6             while (nums[i] == 0 && i > red)
7                 swap(nums[i], nums[red++]);
8         }
9     }
目录
相关文章
LeetCode 148. Sort List
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
75 0
LeetCode 148. Sort List
|
索引
LeetCode 75. Sort Colors
给定一个具有红色,白色或蓝色的n个对象的数组,对它们进行就地排序,使相同颜色的对象相邻,颜色顺序为红色,白色和蓝色。 这里,我们将使用整数0,1和2分别表示红色,白色和蓝色。 注意:您不应该使用库的排序功能来解决此问题。
53 0
LeetCode 75. Sort Colors
LeetCode 75 Sort Colors 颜色分类(荷兰国旗)
Given an array 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. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
103 0
|
人工智能 C++ Python
LeetCode 905. Sort Array By Parity
LeetCode 905. Sort Array By Parity
103 0
|
vr&ar
【LeetCode1122】数组的相对排序(哈希or自定义sort)
没错,,简单题,就是说将arr1中有arr2的元素,则按照arr2的元素先排列(特别注意:这里的arr2的元素都是不同的,但是arr1中是可以元素重复的)
185 0
【LeetCode1122】数组的相对排序(哈希or自定义sort)