【leetcode】75.颜色分类

文章目录

        • [1. 单指针](#1. 单指针)
        • [2. 非原地(数组)](#2. 非原地(数组))

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

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

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

示例 1:

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

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

示例 2:

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

输出:[0,1,2]

1. 单指针
python 复制代码
class Solution(object):
    def sortColors(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        a = 0
        for i in range(len(nums)):
            if nums[i] == 0:
                nums[a], nums[i] = nums[i], nums[a]
                a += 1
        
        for i in range(a, len(nums)):
            if nums[i] == 1:
                nums[a], nums[i] = nums[i], nums[a]
                a += 1
        return nums

  
2. 非原地(数组)
python 复制代码
class Solution(object):
    def sortColors(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        red = 0
        white =0
        blue = 0
        for color in nums:
            if color == 0:
                red += 1
            elif color == 1:
                white += 1
            else:
                blue += 1
        nums[:red] = [0] * red
        nums[red: red + white] = [1] * white
        nums[red + white: ] = [2] * blue
        
相关推荐
AI 嗯啦几秒前
计算机的排序方法
数据结构·算法·排序算法
l12345sy14 分钟前
Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】
算法·机器学习·kmeans·聚类·sse·sc·ch
_Coin_-27 分钟前
算法训练营DAY58 第十一章:图论part08
数据结构·算法·图论
scx201310041 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷
YC运维1 小时前
Ansible题目全解析与答案
java·算法·ansible
小欣加油2 小时前
leetcode 912 排序数组(归并排序)
数据结构·c++·算法·leetcode·排序算法
山河君2 小时前
webrtc之高通滤波——HighPassFilter源码及原理分析
算法·音视频·webrtc·信号处理
星辰大海的精灵2 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
data myth3 小时前
力扣1210. 穿过迷宫的最少移动次数 详解
算法·leetcode·职场和发展
惯导马工3 小时前
【论文导读】AI-Assisted Fatigue and Stamina Control for Performance Sports on IMU-Gene
深度学习·算法