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

力扣 hot100 Day65

75. 颜色分类

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

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

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

    class Solution {
    public:void sortColors(vector<int>& nums) {int red =0,white = 0,blue = 0;for(int i=0;i<nums.size();i++){if(nums[i]==0)red++;else if(nums[i]==1)white++;else blue++;}for(int i=0;i<nums.size();i++){if(i<red)nums[i]=0;else if(i<white+red) nums[i]=1;else nums[i]=2;}}
    };

    其实排个序就行,我这是按提示写的,时间复杂度较排序更低

    如果面试,最好是用三指针法,只需一次遍历

    class Solution {
    public:void sortColors(vector<int>& nums) {int low = 0, mid = 0, high = nums.size() - 1;while (mid <= high) {if (nums[mid] == 0) {swap(nums[low], nums[mid]);low++;mid++;} else if (nums[mid] == 1) {mid++;} else { // nums[mid] == 2swap(nums[mid], nums[high]);high--;}}}
    };

    逻辑就是用指针标记0,1,2所在位置,然后遍历时交换即可

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

    相关文章:

  • 《Python 实用项目与工具制作指南》 · 前言
  • [自动化Adapt] GUI交互(窗口/元素) | 系统配置 | 非侵入式定制化
  • [特殊字符]️ 整个键盘控制无人机系统框架
  • Qt按键响应
  • 更智能的 RibbonBar Spread.NET 18.2Crack
  • QT:交叉编译mysql驱动库
  • 基于鼠标位置的相机缩放和平移命令的实现(原理+源码)
  • Prompt Engineering
  • 赛博威携手Dify,助力AI在企业的场景化落地
  • 【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况
  • Linux(centos)安全狗
  • Linux 用户与组管理全解析
  • 采购管理工具的实施方法论:三阶段框架与常见问题解决方案
  • RHCA02
  • How To Say - AI多语言表达工具
  • 【前端:Html】--1.3.基础语法
  • el-table高度自适应vue页面指令
  • 第二十三天(APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围)
  • Jetbrains IDE总是弹出“需要身份验证”窗口
  • 算法11. 盛最多水的容器
  • leetcode-sql-3497分析订阅转化
  • 优选算法 力扣 11. 盛最多水的容器 双指针降低时间复杂度 贪心策略 C++题解 每日一题
  • 验证码等待时间技术在酒店自助入住、美容自助与社区场景中的应用必要性研究—仙盟创梦IDE
  • Flask + HTML 项目开发思路
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • 同质无向加权图:理论基础、算法演进与应用前沿
  • MySQL偏门但基础的面试题集锦
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • IM消息数据库调研
  • Lecture 1 Overview and Tokenization 课程笔记