75. 颜色分类

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

注意:

不能使用代码库中的排序函数来解决这道题。

示例:

输入: [2,0,2,1,1,0]

输出: [0,0,1,1,2,2]

进阶:

一个直观的解决方案是使用计数排序的两趟扫描算法。

首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。

你能想出一个仅使用常数空间的一趟扫描算法吗?

class Solution {
public void sortColors(int[] nums) {
//双指针
int low = 0, high = nums.length - 1;
int i = 0;
while(i <= high){
if(nums[i] == 0){
int tmp = nums[i];
nums[i] = nums[low];
nums[low] = tmp;
++low; ++i;
}else if(nums[i] == 1){
++i;
}else if(i <= high && nums[i] == 2){
int tmp = nums[i];
nums[i] = nums[high];
nums[high] = tmp;
--high;
}
}
}
}

最新文章

  1. ELF文件
  2. asp.net WebApi and protobuff
  3. struts2 &lt;s:property/&gt;标签的使用--输出时间格式转换
  4. hdu----(3118)Arbiter(构造二分图)
  5. numa对MySQL多实例性能影响
  6. angular2 select change 事件
  7. iOS: 填充数据表格
  8. c/c++中与字符串处理相关的函数
  9. linux-ubuntu关闭防火墙
  10. HDU 5182
  11. Chapter 8: Exceptional Control Flow
  12. 《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版
  13. 工作经验-PLSQL连接远程数据库
  14. boost::filesystem经常使用使用方法具体解释
  15. show出相应单据列表
  16. stc15w wave
  17. Stack Overflow 2016 最新架构探秘
  18. 【Ansible 文档】【译文】动态inventory
  19. 自动化测试全套流程(一)-搭建Jenkins环境
  20. PyQt5 signal and slot

热门文章

  1. LiteAI四大技术&quot;杀手锏&quot;,解锁物联网智能设备AI开发难关
  2. 新鲜出炉高仿网易云音乐 APP
  3. 从X86指令深扒JVM的位移操作
  4. 详细讲解使用Sublime Text 3进行Markdown编辑和实时预览
  5. HTTP响应格式
  6. HTTP请求格式
  7. Python操作MongoDB代码示例
  8. Django中的事务与ajax
  9. tomcat启动失败怎么回事?
  10. 微信小程序开发 -- 通过云函数下载任意文件