栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Leetcode刷题Python】75. 颜色分类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Leetcode刷题Python】75. 颜色分类

1 题目

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

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

必须在不使用库的sort函数的情况下解决这个问题。

2 解析

(1)方法一
插入排序法,时间复杂度 O ( n 2 ) O(n^2) O(n2)

(2)方法二
单指针交换法。因为只有三种元素,0,1,2。直接将0和1交换到前排就行。

3 python

(1)方法一

def sortColors(self, nums: List[int]) -> None:
        for i in range(1,len(nums)):
            temp = nums[i]
            j = i-1
            while temp=0:
                nums[j+1]  = nums[j]
                j-=1
            # 注意下标是j+1
            nums[j+1] = temp

(2)方法二

def sortColors(self, nums: List[int]) -> None:  
        p = 0
        for i in range(len(nums)):
            if nums[i]==0:
                nums[i],nums[p] = nums[p],nums[i] 
                p+=1
        for i in range(len(nums)):
            if nums[i]==1:
                nums[i],nums[p] = nums[p],nums[i] 
                p+=1    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号