[刷题]Sort Colors
2015-09-15 14:41
267 查看
[刷题]Sort Colors
Version 1 思路简单 O(n)
Version 2 一次循环 O(n)
Version 1 思路简单 O(n)
class Solution { /** * @param nums: A list of integer which is 0, 1 or 2 * @return: nothing */ public void sortColors(int[] nums) { // 2015-09-15 if (nums == null || nums.length == 0) { return; } int count0 = 0; int count1 = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] == 0) { count0++; } else if (nums[i] == 1) { count1++; } } for (int i = 0; i < nums.length; i++) { if (count0 > 0) { nums[i] = 0; count0--; } else if (count1 > 0) { nums[i] = 1; count1--; } else { nums[i] = 2; } } return; } }
Version 2 一次循环 O(n)
class Solution { /** * @param nums: A list of integer which is 0, 1 or 2 * @return: nothing */ public void sortColors(int[] nums) { // 2015-09-15 O(n) if(nums == null || nums.length <= 1) return; // pl 指向0后一个数 int pl = 0; // pr 指向2前一个数 int pr = nums.length - 1; int i = 0; while(i <= pr){ if(nums[i] == 0){ // 遇到0 换到前面 swap(nums, pl, i); pl++; i++; }else if(nums[i] == 1){ i++; }else{ // 遇到2 换到后面 swap(nums, pr, i); pr--; } } } private void swap(int[] a, int i, int j) { if (i == j) { return; } int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } }
相关文章推荐
- 四层和七层负载均衡的区别
- Android源码编译整理总结
- java判断操作系统
- Win10开发究竟能实现哪些牛逼的功能
- WEB相关协议
- 函数对象,函数指针,指针函数
- jquery性能优化的十种方法
- MRC 下block 小结
- hibernate中使用fetch来决策性能方案
- 记录BVT自动化测试结果的函数WriteBVTLog
- 集合
- View的touch事件
- Android学习笔记——SAX解析XML
- 使用Wireshark实时抓包Android
- mysql 更改引擎
- Android Studio -使用 Gradle 打包多版本APK
- BZOJ 2502 清理雪道 最小流
- C Macro UG
- Synchronise time with ntp server in Linux
- 修复linux密码