LeetCode 75*. 颜色分类(Python)

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

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


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


注意:

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


示例:


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

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


仅使用常数空间的一趟扫描算法

思路:


参考三路快排,定义两个指针zero和two,使得nums中从0到zero之间的数全为0,从two到n-1位置的数全为2,zero到i之间的数全为1


定义循环索引i


如果nums[i] == 0则将nums[zero+1]与nums[i]互换,zero指针向后移动一位,i也向后移动一位


如果nums[i] == 2则将 nums[two-1]与nums[i]互换,two指针向前移动一位


如果nums[i] == 1则i++


class Solution(object):
    def sortColors(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        zero = -1   # nums[0 to zero] == 0
        two = len(nums) # nums[two to n-1] == 2
        i = 0
        while i < two:
            if nums[i] == 1:
                i = i + 1
            elif nums[i] == 2:
                two = two - 1
                nums[i], nums[two] = nums[two], nums[i]     
            elif nums[i] == 0:
                zero = zero + 1
                nums[zero], nums[i] = nums[i], nums[zero]   
                i = i + 1   # i要随着zero动,i不能比他小
        return nums


相关文章
|
10月前
|
前端开发 计算机视觉 Python
浅蓝色代表什么颜色?——Python中的颜色表示与处理
本文介绍了浅蓝色在计算机图形和Web开发中的表示方法,包括RGB、十六进制和HSL三种常见格式,并详细说明了如何使用Python的Pillow和colorsys库来处理和转换这种颜色,最后给出了生成浅蓝色背景的CSS代码示例。
756 6
|
Python
Python办公自动化:xlwings对Excel进行分类汇总
Python办公自动化:xlwings对Excel进行分类汇总
255 1
|
10月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
257 3
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
365 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
11月前
|
安全 Python
Python脚本实现IP按段分类
【10月更文挑战第04天】
120 7
|
11月前
|
存储 Python 容器
Python 对象有哪几种,我们可以从哪些角度进行分类呢?
Python 对象有哪几种,我们可以从哪些角度进行分类呢?
89 1
|
Python
在python终端中打印颜色的3中方式(python3经典编程案例)
这篇文章介绍了在Python终端中打印彩色文本的三种方式:使用`colorama`模块、`termcolor`模块和ANSI转义码。
287 8
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
153 9
|
机器学习/深度学习 算法 Python
Python机器学习(sklearn)——分类模型评估与调参总结(下)
Python机器学习(sklearn)——分类模型评估与调参总结
5051 0
|
机器学习/深度学习 算法 测试技术
Python机器学习(sklearn)——分类模型评估与调参总结(上)
Python机器学习(sklearn)——分类模型评估与调参总结
6619 0

推荐镜像

更多