LeetCode 75. Sort Colors
来源:互联网 发布:java 停止线程 编辑:程序博客网 时间:2024/04/30 14:48
1. 题目描述
Given an array with n objects colored red, white or blue, sort them 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.
Note:
You are not suppose to use the library’s sort function for this problem.click to show follow up.
Follow up:
A rather straight forward solution is a two-pass algorithm using counting sort.
First, iterate the array counting number of 0’s, 1’s, and 2’s, then overwrite array with total number of 0’s, then 1’s and followed by 2’s.Could you come up with an one-pass algorithm using only constant space?
2. 解题思路
拿到这个问题, 我们首先想到的是用计数排序可以直接处理, 不过提示中说不要这样做, 而且指明要求使用一种算法, one-pass, constant space.。 我们想到, 可以模拟快速排序, 快速排序实际上就是把小于给定的值的数据丢到一侧, 把大于给定值的数据丢到另外一侧。
这道题目中, 我们也可以这么处理, 把 0 丢到左侧, 把 2 丢到右侧, 即可
3. code
class Solution {public: void sortColors(vector<int>& nums) { int start = 0, stop = nums.size() - 1, cur = 0; while (cur <= stop){ if (nums[cur] == 0){ // 特殊处理 当cur == start 就不需要交换数据了 if (cur == start){ cur++, start++; } else swap(nums[cur], nums[start++]); } else if (nums[cur] == 2){ swap(nums[cur], nums[stop--]); } else{ cur++; } } }};
4. 大神解法
一样的思路
/*The idea is to sweep all 0s to the left and all 2s to the right, then all 1s are left in the middle.*/ class Solution { public: void sortColors(int A[], int n) { int second=n-1, zero=0; for (int i=0; i<=second; i++) { while (A[i]==2 && i<second) swap(A[i], A[second--]); while (A[i]==0 && i>zero) swap(A[i], A[zero++]); } } };
- [LeetCode]75.Sort Colors
- LeetCode --- 75. Sort Colors
- [Leetcode] 75. Sort Colors
- [leetcode] 75.Sort Colors
- 【leetcode】75. Sort Colors
- [leetcode] 75. Sort Colors
- Leetcode 75. Sort Colors
- *LeetCode 75. Sort Colors
- 75. Sort Colors LeetCode
- Leetcode 75. Sort Colors
- [LeetCode]75. Sort Colors
- LeetCode 75. Sort Colors
- LeetCode *** 75. Sort Colors
- leetcode 75. Sort Colors
- LeetCode 75. Sort Colors
- leetcode-75. Sort Colors
- [leetcode]75. Sort Colors
- LeetCode-75.Sort Colors
- Objective-序列帧动画一般使用步骤:
- 配置高并发jdbc连接池
- 设计模式开篇(一)
- maven 手动导入包到仓库
- C#中ToString() 的一些常用用法
- LeetCode 75. Sort Colors
- 小白python进击第二周3.列表生成式问题
- crontab定时删除tomcat日志
- python pieces
- JavaSript模块规范 - AMD规范与CMD规范介绍
- 互联网保险O2O平台微服务架构设计
- week4-4
- 排序算法:冒泡、选择、二分查找
- 使用Grokmirror镜像服务(1)——镜像内核Git仓库