当前位置: 首页 > news >正文

75.颜色分类

75.颜色分类

方法一:冒泡排序

class Solution:def sortColors(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""## 按照红、白、蓝的顺序排序。其实就是实现数组的单调递增排序# 1. 冒泡排序。时间复杂度O(n2)if len(nums) <= 1:return numsfor i in range(len(nums)):              # 确保每个元素一次冒泡swapped = Falsefor j in range(len(nums)-1-i):      # 已冒泡到上层的不需要再遍历了if nums[j] > nums[j+1]:nums[j], nums[j+1] = nums[j+1], nums[j]swapped = Trueif not swapped:break

方法二:计数排序

class Solution:def sortColors(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""## 2. 计数排序:以一个长度为3数组来统计红绿蓝出现的频次,根据频次重新设置nums数组count_list = [0] * 3for ele in nums:count_list[ele] += 1index = 0for i in range(len(count_list)):while count_list[i] != 0:nums[index] = icount_list[i] -= 1index += 1

方法三:partition算法

三向划分

思路

  • 维护三个指针(或理解为三个区域的边界):
  • p0:0 的右边界([0, p0) 区间是 0)
  • p2:2 的左边界((p2, n-1] 区间是 2)
  • curr:当前正在查看的元素

Code

class Solution:def sortColors(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""p0 = 0 cur = 0         ### cur指针 >= p0p2 = len(nums)-1while cur <= p2:if nums[cur] == 0:nums[p0], nums[cur] = nums[cur], nums[p0]p0 += 1cur += 1            ### 因为是从左向右遍历的,这里一定能确保[0:p0)都为0,故cur要+1去遍历下一个元素elif nums[cur] == 2:                ### 确保(p2:]都为2nums[p2], nums[cur] = nums[cur], nums[p2]p2 -= 1             ### 这里不能cur ++,因为是从左向右遍历每个元素,当前交换后的这个元素也要进行判断,cur++的话就跳过了对交换后这个元素的判断else:                   ### 确保[p0:p2]都为1cur += 1            ### 遇到1的,保留在中间

http://www.dtcms.com/a/509120.html

相关文章:

  • vue3知识点-setup返回值OptionsAPI以及其语法糖汇总
  • 专业的聊城做网站费用用凡科做网站的费用
  • 知道网站域名怎么联系免费网站模版
  • 蛋白表达标签:重组蛋白研究的精妙引擎
  • 网站建设广金手指排名番禺人才网招聿
  • 关于门户网站建设讲话酒庄企业网站
  • 建站公司联系电话wordpress 用户发帖
  • Nature Methods | GHIST vs LOKI:HE→表达的两条路径 | 单细胞级重建 vs spot级预测
  • 上海网站建设平台站霸网络多个网站给一个网站推广
  • 深圳的网站制作公司网站招聘怎么做
  • 网站建设推广渠道iis怎么做ip网站吗
  • Visual Basic 文件系统控件
  • Unity多层嵌套预设在SVN中的问题
  • 阳江房产网春天尚院wordpress seo设置
  • 如何做搞笑原创视频网站wordpress 4.7多用户
  • 怎么找网站帮我做推广网站怎么加内容
  • 肇庆网站seo外卖平台如何做推广效果好
  • 怎样创建公司网站wap网站模板下载
  • 19.map和set的封装
  • 【Python机器学习入门1】VSCode环境配置与Python基础
  • 网站建设的主要职责网站开发 接口还是ajax
  • 外贸独立站SEO技术架构深度优化指南
  • phython 做的网站怎样做网络营销推广
  • 旅游自媒体网站怎么做主页制作语言缩写
  • 金乡县网站开发中信建设有限责任公司历任董事长
  • 猿辅导Java面试真实经历与深度总结(二)
  • 株洲seo网站优化项目计划书图片
  • 网站赚钱苏州手工活外发加工网
  • 大文件传输
  • 莒南县建设局网站网站建好了 怎么建后台