颜色分类

题目描述:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

注意:

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

示例:

输入: [2,0,2,1,1,0]

输出: [0,0,1,1,2,2]

代码

class Solution {

    public void sortColors(int[] nums) {

        int p0 = 0,curr = 0;

        int p2 = nums.length - 1;

        int tmp;


        while(curr <= p2) {

            if (nums[curr] == 0) {

                tmp = nums[p0];

                nums[p0++] = nums[curr];

                nums[curr++] = tmp;

            }else if (nums[curr] == 2) {

                tmp = nums[p2];

                nums[p2--] = nums[curr];

                nums[curr] = tmp; 

            }else {

                curr++;

            }

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝...
    文茶君阅读 355评论 0 0
  • 题目 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色...
    禾木清清阅读 344评论 0 0
  • 题目描述 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照...
    youzhihua阅读 138评论 0 0
  • 给定一个包含红色、白色和蓝色,一共 n个元素的数组, 原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色...
    Antrn阅读 297评论 0 0
  • 075_(颜色分类)Sort Colors 1 问题描述、输入输出与样例 1.1 问题描述 给定一个包含红色、白色...
    程序员乔戈里阅读 222评论 0 0