LeetCode-python|LeetCode-python 75.颜色分类
【LeetCode-python|LeetCode-python 75.颜色分类】题目链接
难度: 中等类型:动态规划
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例
输入: [2,0,2,1,1,0]解题思路 遍历数组,碰到0往左放,碰到2往右放
输出: [0,0,1,1,2,2]
规则:
设置一个red指针,保证red指针的左侧都为0
设置一个blue指针,保证blue指针的右侧都为零
设置一个white指针,保证red到white之间都为1
初始化:
red = 0, white=0, blue=数组长度-1
更新:
white指针从0开始向右移动,white>blue时结束
nums[white] = 0 时,和nums[red]交换, red++, white++
nums[white] = 2 时,和nums[blue]交换, blue--
nums[white] = 1 时,white++
代码实现
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
n = len(nums)
red, white, blue = 0, 0, n-1
while white <= blue:
if nums[white] == 0:
nums[white], nums[red] = nums[red], nums[white]
white += 1
red += 1
elif nums[white] == 1:
white += 1
else:
nums[white], nums[blue] = nums[blue], nums[white]
blue -= 1
本文链接:https://www.jianshu.com/p/4da8fffe09be
推荐阅读
- python自定义封装带颜色的logging模块
- iOS富文本为html时,修改默认字体颜色
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- 175.|175. 组合两个表(SQL)
- RGB、CMY、CMYK、YUV、HSV、HSI、LAB颜色空间详解
- 明妃传
- 【音视频基础】(七)(CIE颜色空间三之从CIE|【音视频基础】(七):CIE颜色空间三之从CIE XYZ到CIE xyY)
- 基于颜色特性的目标检测方法
- PDF修改背景颜色怎么做|PDF修改背景颜色怎么做 用什么PDF编辑工具实现
- 留恋海棠颜色、过清明。