Sort Colors
来源:互联网 发布:目前数据库证书有哪些 编辑:程序博客网 时间:2024/05/17 08:23
public class Solution { public void sortColors(int[] A) { int left0, right0; int left1, right1; int left2, right2; int n = A[0]; if(n == 0){ left0 = right0 = 0; left1 = right1 = 1; left2 = right2 = 1; } else if(n == 1){ left0 = right0 = 0; left1 = right1 = 0; left2 = right2 = 1; } else if(n == 2){ left0 = right0 = 0; left1 = right1 = 0; left2 = right2 = 0; } int tmp; for(int i = 1; i < A.length; i++){ switch(A[i]){ case 0:{ tmp = A[i]; for(int j = i-1; j >= left1; j--){ A[j+1] = A[j]; } A[left1] = tmp; right0 = left1; left1++; right1++; left2++; right2++; break; } case 1:{ tmp = A[i]; for(int j = i-1; j >= left2; j--){ A[j+1] = A[j]; } A[left2] = tmp; right1 = left2; left2++; right2++; break; } case 2:{ right2++; break; } } } }}
网上别人更简单的代码:赞!!!
public void sortColors(int[] A) { int i=-1, j=-1, k=-1; for(int p = 0; p < A.length; p++) { if(A[p] == 0) { A[++k]=2; A[++j]=1; A[++i]=0; } else if (A[p] == 1) { A[++k]=2; A[++j]=1; } else if (A[p] == 2) { A[++k]=2; } }}
and:
public void sortColors(int[] A) { int i=-1, j=-1; for(int p = 0; p < A.length; p++) { int v = A[p]; A[p] = 2; if (v == 0) { A[++j] = 1; A[++i] = 0; } else if (v == 1) { A[++j] = 1; } }}
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
- Android多媒体学习五:调用Android自带的播放器播放Audio
- 20140918遇到的问题------JAVA------MyEclipse配置Tomcat出现的问题
- 你好,C++(9)坐216路公交车去买3.5元一斤的西红柿——C++中如何表达各种数值数据 3.3 数值数据类型
- Linux下C++编程学习vi&vim编辑器的使用(1)
- 简单的RPC java实现
- Sort Colors
- Buffer与Cache的学问
- 苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型
- Java Servlet 过滤器总结
- URAL 1737 Mnemonics and Palindromes 3 构造
- Android多媒体学习六:利用Service实现背景音乐的播放
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- ld: symbol(s) not found for architecture x86_64
- ASIHTTPRequest详解