Sort Colors
来源:互联网 发布:大数据数据分析论文 编辑:程序博客网 时间:2024/05/17 10:56
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.
class Solution {public: void sortColors(int A[], int n){ int r = 0;int w = 0;for (int i = 0; i < n; i++){if (A[i] == 0)r++;else if (A[i] == 1)w++;}memset(A, 0, sizeof(int)*r);for (int i = r; i < r+w; i++)A[i] = 1;for (int i = r+w; i < n; i++)A[i] = 2;return; }};
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?
class Solution {public: void sortColors(int A[], int n){int blue = n-1;int red = 0;for (int cur = red; cur <= blue; ){if (A[cur] == 1){++cur;continue;}int tmp = A[cur];if (tmp == 0){A[cur++] = A[red];A[red++] = tmp;}else if(tmp == 2){A[cur] = A[blue];A[blue--] = tmp;}} }};
0 0
- Sort Colors
- sort colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- Sort Colors
- 输入appid以后直接弹出rolling back the update
- CentOS 6.5设置
- linux下的多线程下载工具 axel多线程断点续传下载工具的安装与使用
- SQL Syntax -- More about SQL
- CUDA编程入门----Thrust库简介
- Sort Colors
- Win764bit上安装32位Oracle10g出现错误:无法定位程序输入点GetProcessImageFileNameW于动态链接库PSAPI.DLL
- 设计模式学习笔记--策略(Strategy)模式
- 从Service中的Notification启动Activity
- 如何恢复手机中删除的微信聊天记录?
- SDOI2014 Round1 day1
- Effective C++——》条款14:在资源管理中小心copying行为
- Python学习笔记(1)变量、循环
- Python学习笔记(2)比特操作、类、文件操作