博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
75. 颜色分类
阅读量:4553 次
发布时间:2019-06-08

本文共 805 字,大约阅读时间需要 2 分钟。

75. 颜色分类

题目描述

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

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

注意:

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

示例:

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

进阶:

  • 一个直观的解决方案是使用计数排序的两趟扫描算法。
    首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
  • 你能想出一个仅使用常数空间的一趟扫描算法吗?

贴出代码

class Solution {    public void sortColors(int[] nums) {        int zero = -1, one = 0, two = nums.length;        while (one < two){            if (nums[one] == 0){                swap(nums,++zero,one++);            } else if (nums[one] == 2) {                swap(nums, --two, one);            }else{                ++one;            }        }    }    private void swap(int[] nums, int i, int j){        int t = nums[i];        nums[i] = nums[j];        nums[j] = t;    }}
 

转载于:https://www.cnblogs.com/Tu9oh0st/p/10974721.html

你可能感兴趣的文章
聊聊区块链
查看>>
基本数据类型(数字和字符串)
查看>>
函数__装饰器
查看>>
linux system函数分析
查看>>
前端优化措施
查看>>
Hack
查看>>
论学习汉语和学习编程的异同点
查看>>
linux img文件压缩及解压
查看>>
我就是一名房地产经纪人!不是中介,谁能明白我们呢?
查看>>
计算php脚本执行时间
查看>>
php静态和抽象
查看>>
Jolt:软件业的奥斯卡
查看>>
机器学习课程笔记 (1)
查看>>
基础数据类型 格式化输出
查看>>
第九周作业
查看>>
解析大型.NET ERP系统 单据编码功能实现
查看>>
互联网创业应该如何找到创意 - RethinkDB创始人Slava Akhmechet的几点建议
查看>>
互联网技术架构给我们的启示
查看>>
APIO2007 风铃
查看>>
hbase redis mysql重要知识点总结
查看>>