码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode——分类颜色

时间:2020-03-21 23:10:13      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:蓝色   color   设置   code   示例   计数排序   ref   for   sort   

Q:给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排序。
此题中,我们使用整数0、1和2分别表示红色、白色和蓝色。
【示例】
输入:[2, 0, 2, 1, 1, 0]
输出:[0, 0, 1, 1, 2, 2]
【注意】
不能使用代码库中的排序函数来解决这道题。
A:
这里使用计数排序。可以看:https://www.cnblogs.com/bqwzx/p/11029264.html
设置一个map,key分别为0,1,2,记录数量,然后按照数量输出(这里用int[]实现的,我发现用map太麻烦了……)

    public static void sortColors(int[] num) {
        int[] color = new int[3];
        if (num == null || num.length == 0)
            return;
        for (int i = 0; i < num.length; i++) {
            color[num[i]]++;
        }
        for (int i = 0; i < num.length; ) {
            for (int j = 0; j < 3; j++) {
                while (color[j]-- != 0) {
                    num[i++] = j;
                }
            }
        }
    }

LeetCode——分类颜色

标签:蓝色   color   设置   code   示例   计数排序   ref   for   sort   

原文地址:https://www.cnblogs.com/xym4869/p/12543047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!