Sort Colors
来源:互联网 发布:羽毛球训练软件 编辑:程序博客网 时间:2024/05/06 16:39
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.
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?
Analyze:
We use two pointers to point to the places where 0 and 2 should be inserted. We use another pointer to enumerate all the values in the array.
Code:
public class Solution { public void sortColors(int[] A) { if (A == null || A.length == 0) return; int left = 0; int right = A.length - 1; int cur = left; while(cur <= right) { if (A[cur] == 0) { swap(A, left++, cur); cur = (cur <= left) ? left : cur; } else if (A[cur] == 2) { swap(A, right--, cur); } else { cur++; } } } public void swap(int[] A, int i, int j) { int temp = A[i]; A[i] = A[j]; A[j] = temp; }}
- 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
- php 无限递归查询子id 子类 根据父分类 父ID 查询所有子分类 子ID
- 如何在Listener监听中使用spring容器中的内容
- 在Java 7里如何对文件进行操作
- Linux下Openoffice乱码解决方法
- 证券/资产证券化
- Sort Colors
- git:更改远程仓库指向 remote url
- 如何使用NSCoding和NSFileManager来保存你的应用程序数据
- PHP 抓取网页内容天气-IP对应地理位置等
- jQuery与其它库冲突的解决方法
- 浅谈java中的四个核心概念
- 查询并自动创建Missing Index
- Linux中find常见用法示例
- IPhone之UIToolBar