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

网站常用模块功能说明5118素材网站

网站常用模块功能说明,5118素材网站,网站域名查主机名,规范机关单位网站建设75. 颜色分类 📌 题目描述 给定一个包含红色、白色和蓝色的数组 nums(分别用整数 0、1 和 2 表示),请你原地对它们进行排序,使得相同颜色的元素相邻,顺序为: 红色 (0) → 白色 (1) → 蓝色 (…

75. 颜色分类

📌 题目描述

给定一个包含红色、白色和蓝色的数组 nums(分别用整数 0、1 和 2 表示),请你原地对它们进行排序,使得相同颜色的元素相邻,顺序为:

红色 (0) → 白色 (1) → 蓝色 (2)

要求:不能使用库函数 sort,且需要原地操作,空间复杂度为 O(1)。 

✨ 示例

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

💡 解法:三指针 + 一趟扫描(荷兰国旗算法) 

class Solution:def sortColors(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# 三指针:left指向0的右边界,right指向2的左边界,curr遍历当前元素left, curr, right = 0, 0, len(nums) - 1while curr <= right:if nums[curr] == 0:nums[left], nums[curr] = nums[curr], nums[left]left += 1curr += 1elif nums[curr] == 2:nums[right], nums[curr] = nums[curr], nums[right]right -= 1# 注意:这里不能curr += 1,因为交换过来的元素需要继续判断else:curr += 1

📍 解题思路详解

这是经典的荷兰国旗问题,核心思想是使用三个指针划分区域:

  • left:左边界,所有 0 应该放在这里

  • right:右边界,所有 2 应该放在这里

  • curr:当前正在遍历的元素

🧠 三种情况:

nums[curr]操作指针更新
0left 交换left += 1, curr += 1
1保持不动curr += 1
2right 交换right -= 1(curr 不变)

⏱️ 时间与空间复杂度

  • 时间复杂度O(n),每个元素最多只被遍历一次

  • 空间复杂度O(1),原地排序,无额外空间

🔚 总结

本题考察对原地排序、双指针/三指针技巧的掌握,是一道非常经典的数组类面试题。务必熟练掌握!

 

http://www.dtcms.com/wzjs/95002.html

相关文章:

  • 网站建设企业站有哪些要求源码交易平台
  • 谁会网站开发网络营销专业学校排名
  • 做网站建设的合同范本软考十大最靠谱it培训机构
  • 法人变更流程青岛seo网站建设公司
  • 数据库与网站建设百度贴吧人工客服
  • 学做投资网站百度推广获客方法
  • 做养殖推广什么网站好重庆网站关键词排名
  • 建设网站需要什么样的服务器做网络推广的公司
  • 字画价格网站建设方案哪里可以建网站
  • 什么页游好玩百度优化点击软件
  • 网站项目怎么做站长工具综合查询ip
  • 设计公司网站怎么做百度收录网站多久
  • dj网站建设网站建设的推广渠道
  • 西安高端品牌网站建设网络营销和推广做什么
  • 衡阳网站推广排名成都专业的整站优化
  • 网站收费模板汕头网站建设
  • 广州网站建设品牌线上推广方式有哪些
  • wordpress内网访问qq群排名优化软件官网
  • 变更icp备案网站信息查询经典软文广告
  • 常德市人民政府网站营销渠道有哪些
  • 软件项目管理工作内容厦门seo关键词优化培训
  • 苏州虎丘区建设局网站武汉大学人民医院官网
  • 黄冈网站建设费用惠州seo
  • 有哪些是外国人做的网站吗seo软件全套
  • 征婚网站开发广州排名推广
  • 北京建设执业网站大一网页设计作业成品
  • 建设com网站浙江百度查关键词排名
  • 有专业做线切割配件的网站吗站长素材官网免费
  • 国外那些视频网站做的不错常州seo
  • musik wordpress抚顺网站seo