LeetCode——分类颜色

Posted Shaw_喆宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode——分类颜色相关的知识,希望对你有一定的参考价值。

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——分类颜色的主要内容,如果未能解决你的问题,请参考以下文章

leetcode75之颜色分类

leetcode75 颜色分类(Medium)

leetcode-----75. 颜色分类

LeetCode——75. 颜色分类

[LeetCode] 75. 颜色分类

LeetCode——分类颜色