您的位置:首页 > 其它

75. Sort Colors

2016-05-27 13:03 330 查看
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.

题目大意:给定一个含有0,1,2的数组,数组无序,需要排序最终结果类似于[0,0,0,0,1,1,1,1,2,2,2,2,2]。

解题方法:可以遍历数组,对0,1,2分别计数,然后BlaBlaBla向下写。

下面代码是看到的一个比较好的思路,即使有多个颜色也是可以扩展。

public class Solution {
public void sortColors(int[] nums) {
if(nums==null||nums.length==0)
return;
int i=-1,j=-1,k=-1;
for(int x=0;x<nums.length;x++){
if(nums[x]==0){
nums[++i]=2;
nums[++j]=1;
nums[++k]=0;
}
else if(nums[x]==1){//此处必须要有else,否则if==0后可能会再次进入此if中。因为nums内容已变
nums[++i]=2;
nums[++j]=1;
}
else if(nums[x]==2){
nums[++i]=2;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetecode