您的位置:首页 > 其它

颜色分类

2017-07-28 22:56 134 查看
给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。

我们可以使用整数 0,1 和 2 分别代表红,白,蓝。

 注意事项

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

排序需要在原数组中进行。

样例

给你数组 [1, 0, 1, 2], 需要将该数组原地排序为 [0, 1, 1, 2]。

import java.util.HashMap;
import java.util.Scanner;

/**
* 给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。
我们可以使用整数 0,1 和 2 分别代表红,白,蓝。
注意事项
不能使用代码库中的排序函数来解决这个问题。
排序需要在原数组中进行。
样例
给你数组 [1, 0, 1, 2], 需要将该数组原地排序为 [0, 1, 1, 2]。
*
* @author Dell
*
*/
public class Test148 {
public static void sortColors(int[] nums)
{
if(nums.length==0)
return;
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++)
{
if(map.containsKey(nums[i]))
{
map.put(nums[i],map.get(nums[i])+1);
}else
{
map.put(nums[i], 1);
}
}
int numofzero=map.get(0);
int numofone=map.get(1);
for(int i=0;i<nums.length;i++)
{
if(i<numofzero)
{
nums[i]=0;
}
else if(i<numofzero+numofone)
{
nums[i]=1;
}
else
{
nums[i]=2;
}
}

}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int
;
for(int i=0;i<a.length;i++)
{
a[i]=sc.nextInt();
}
sortColors(a);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode