当前位置: 首页 > 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.lryc.cn/news/609508.html

    相关文章:

  • 嵌入式学习之51单片机——串口(UART)
  • 回归预测 | MATLAB实现BP神经网络多输入单输出回归预测+SHAP可解释分析
  • 分布式光伏气象站:为分散电站装上 “智慧之眼”
  • 零基础掌握 Scrapy 和 Scrapy-Redis:爬虫分布式部署深度解析
  • 分布式版本控制工具Git
  • Spring之【Bean的实例化方式】
  • 电脑忘记开机密码怎么办?【图文详解】5种方法重置/更改/取消/设置开机密码?
  • Java从入门到精通 - 算法、正则、异常
  • 深入浅出 RabbitMQ:简单队列实战指南
  • 【Linux指南】软件安装全解析:从源码到包管理器的进阶之路
  • 小杰数据结构(five day)——知人者智,自知者明。
  • WPF 按钮背景色渐变
  • 飞算 JavaAI:给需求分析装上 “智能大脑“
  • VPS云服务器Linux性能分析与瓶颈解决方案设计
  • 机器学习 决策树案例电信用户流失
  • 豆包新模型+PromptPilot深度评测:提示词工程的智能化突破
  • Chrontel 【CH7104B-BF】CH7104B HDMI to HDTV/VGA Converter
  • SJW-app-1
  • 力扣热题100——双指针
  • Android GPU测试
  • 豹女篇章-人形态技能加攻速
  • 数据离不开哈希
  • 【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
  • 【前端:Html】--1.3.基础语法
  • 【人工智能99问】什么是Post-Training,包含哪些内容?(19/99)
  • 3.JVM,JRE和JDK的关系是什么
  • Linux 系统重置用户密码指南
  • 【09】C++实战篇——C++ 生成静态库.lib 及 C++调用lib,及实际项目中的使用技巧
  • vue3指定设置了dom元素的ref但是为null问题
  • 大模型 与 自驾 具身 3D世界模型等相关知识