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

力扣题库——75.颜色分类

这道题采用三路快速排序,快速排序思路看这里快速排序。将数列分为三组:小于基准、等于基准、大于基准。和快排一样,对左右递归进行快速排序。

先将题目简化,如果只有数字0和1,扫描一遍数组,遇到数字1不用管,如果遇到第几个数字0,就和第几个数进行交换。代码如下:

int zero=0;
for(int i=0;i<nums.size()-1;i++)
{if(nums[i]==0){swap(nums[i],num[zero++]);}
}

再看另一种情况,只有数字1和2,采用相同的思路:

int two=nums.size()-1;
for(int i=0;i<=two;i++)
{while(nums[i]==2&&i<=two){swap(nums[i],nums[two--]);}
}

最后进行合并:

 int zero=0,two=nums.size()-1;for(int i=0;i<=two;i++){while(nums[i]==2&&i<=two){swap(nums[i],nums[two--]);}if(nums[i]==0){swap(nums[i],nums[zero++]);}}}

注:while语句要放到if语句前面,因为交换时可能会把0交换,需要马上交换到前面!

得了。


http://www.mrgr.cn/news/69176.html

相关文章:

  • 11-通信图建模测试
  • 2024.10.8校招 实习 内推 面经
  • 微搭低代码入门05循环
  • Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试
  • Ubuntu 20.04配置ollama并下载安装调用本地大语言模型
  • 基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取
  • 计算结构加法3+2
  • java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector问题解决
  • 提升内容质量的五大关键策略
  • 家用云相册方案探索之Immich
  • 鸿蒙进阶篇-type、typeof、类
  • Java基于小程序公考学习平台的设计与实现(附源码,文档)
  • 配置拦截器时Bean注入失败的解决方案
  • 课程讲解--深入探究二分算法
  • springboot给不同用户动态定制请求结果思路
  • 敏感词过滤方案
  • vite构建的react程序放置图片
  • 【2】GD32H7xx 串口Idle + DMA接收不定长数据
  • 【EFK】Linux集群部署Elasticsearch最新版本8.x
  • 2024 年 Java 面试正确姿势(1000+ 面试题附答案解析)
  • 操作系统学习笔记-5.2设备独立性软件
  • 简记Vue3(四)—— 路由
  • SCAU 高级程序设计语言(C语言) 教材习题
  • 算法
  • 栈(Stack)和队列(Deque、Queue)
  • OSPF总结