【LeetCode】Sort Colors
2014-03-01 14:29
337 查看
Sort Colors
Total Accepted: 8218 Total Submissions: 26914 My Submissions
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.
题目大意,数组中有0,1,2三种类型的数字,代表红白绿三种颜色。请按红白绿顺序排好数组。
最简单暴力的方法,统计0,1,2三个数字的个数,然后按照次序依次排好。这个效率貌似最高,速度最快。
其他的办法就是cur代表当前数字,low代表0,high代表2。如果cur为1,直接判断下一个数字,如果是0,和low交换。如果是2,和high交换。
Java AC 1
Java AC 2
Total Accepted: 8218 Total Submissions: 26914 My Submissions
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.
题目大意,数组中有0,1,2三种类型的数字,代表红白绿三种颜色。请按红白绿顺序排好数组。
最简单暴力的方法,统计0,1,2三个数字的个数,然后按照次序依次排好。这个效率貌似最高,速度最快。
其他的办法就是cur代表当前数字,low代表0,high代表2。如果cur为1,直接判断下一个数字,如果是0,和low交换。如果是2,和high交换。
Java AC 1
public class Solution { public void sortColors(int[] A) { if(A == null || A.length == 0){ return; } int len = A.length; int numArr[] = new int[3]; for(int i = 0; i < len; i++){ numArr[A[i]]++; } int k = 0; for(int i = 0; i < 3; i++){ for(int j = 0; j < numArr[i]; j++){ A[k] = i; k++; } } } }
Java AC 2
public class Solution { public void sortColors(int[] A) { if(A == null || A.length == 0){ return; } int len = A.length; int low = 0; int high = len-1; int k = 0; while(k <= high){ if(A[k] == 0){ swap(A, k, low); low++; k = (k <= low) ? low : k; }else if(A[k] == 2){ swap(A, k, high); high--; }else { k++; } } } public void swap(int A[], int i, int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp; } }Python AC
class Solution: # @param A a list of integers # @return nothing, sort in place def sortColors(self, A): alen = len(A) numArr = [0, 0, 0] for i in range(alen): numArr[A[i]] += 1 k = 0 for i in range(3): for j in range(numArr[i]): A[k] = i k += 1
相关文章推荐
- Hashmap的Hash()
- 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
- 无权最短路径-广度优先搜索
- sql server 查看表的行数
- highcharts图表插件
- 比较虚拟机中文件系统的性能
- linux多线程编程--信号量和条件变量 唤醒丢失事件
- 控制音量,播放时间等的UISlider类
- YII关联查询
- Nmap在实战中的高级用法
- 日志打印的10个小建议
- 智能手表的未来:独立还是附属,这是个问题!
- 实习记录8
- 洗牌算法3-完美洗牌算法
- PHP调用非COM的dll
- Yii查询
- 解读:下载Android源码时为什么对Python版本有要求
- 分段控制器
- HashSet如何去重复?
- linux 下安装jdk