LeetCode热题100-颜色分类

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

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

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

题目要求不能排序,那想到的方法只能是双指针的方法,可以仿照之前的思路,使用快慢指针。时间复杂度3n。

python 复制代码
class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        if not nums:
            return
        
        def points_type(nums, k):
            slow = 0
            for fast in range(len(nums)):
                if nums[fast] != k:
                    nums[slow], nums[fast] = nums[fast], nums[slow]
                    slow += 1
        
        colors = [0, 1, 2]
        for color in colors:
            points_type(nums, color)

这里使用时间复杂度为On的进行1次遍历,主要确定0/2的位置完整的话,1的位置也是完整的。

python 复制代码
class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        if not nums:
            return
        
        left = 0
        right = len(nums) - 1
        i = 0
        while i <= right:

            if nums[i] == 0:
                nums[left], nums[i] = nums[i], nums[left]
                left += 1
                i += 1
                # 交换后这里是left值正常是0
            elif nums[i] == 2:
                nums[right], nums[i] = nums[i], nums[right]
                right -= 1
                # 交换后这里为right值需要检查
            else:
                i += 1
  
相关推荐
萧鼎33 分钟前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi
2601_9622998839 分钟前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
2601_965742221 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
旋生万物2 小时前
量子纠错容错率87%?螺旋拓扑码用“相位保护“给量子比特上保险(附Python)
python·ai编程·量子计算·量子纠错·螺旋计算
用户8356290780512 小时前
使用 Python 设置 Excel 页眉和页脚
后端·python
databook2 小时前
异常值检测与处理方法总结
python·数据挖掘·数据分析
千里码aicood2 小时前
面向智能助理的多轮医疗对话生成系统开发
python
MC皮蛋侠客2 小时前
OPC UA 系列(一):标准全景与 Python 最小闭环——让第一条设备数据流动起来
开发语言·python·opcua
用户3721574261352 小时前
使用 Python 提取 Word 文档中的表格数据
python
有味道的男人2 小时前
得物详情 API|支持实时价格、成色、鉴别服务数据
windows·python·api