【专项刷题】— 快排

1、颜色分类 - 力扣(LeetCode)

思路:

  1. 创建三个指针,然后把数组分为三个区域
  2. 遍历
  3. 代码:
    class Solution {public void swap(int[] nums, int i, int j){int t = nums[i];nums[i] = nums[j];nums[j] = t;}public void sortColors(int[] nums) {int left = -1;int right = nums.length;int i = 0;while(i < right){if(nums[i] == 0){swap(nums, ++left, i++);}else if(nums[i] == 1){i++;}else{swap(nums, --right, i);}}}
    }

2、 排序数组 - 力扣(LeetCode)

思路:

  1. 题1的解法,只需优化一下,随机生成被比较的值即可
  2. 代码:
    class Solution {public int[] sortArray(int[] nums) {qsort(nums, 0, nums.length - 1);return nums;}public void qsort(int[] nums, int l, int r){if(l >= r){return;}//随机生成值int key = nums[(new Random().nextInt(r - l + 1) + l)];int left = l-1;int i = l;int right = r+1;while(i < right){if(nums[i] < key){swap(nums,++left,i++);}else if (nums[i] == key){i++;}else{swap(nums, --right, i);}}qsort(nums, l, left);qsort(nums, right, r);}public void swap(int[] nums, int l,int r){int tmp = nums[l];nums[l] = nums[r];nums[r] = tmp;}
    }

 3、数组中的第K个最大元素 - 力扣(LeetCode)

思路:

  1. 在快排的基础上寻找这个第k大的数
  2. 把每个区间的元素的个数标出来,然后:
  3. 代码:
    class Solution {public int findKthLargest(int[] nums, int k) {return qsort(nums, 0, nums.length - 1, k);}public int qsort(int[] nums, int l, int r, int k){if(l == r){return nums[l];}//选择一个基准int key = nums[new Random().nextInt(r-l+1)+l];//根据基准将数组分为三个部分int left = l - 1;int right = r + 1;int i = l;while(i < right){if(nums[i] < key){swap(nums, ++left, i++);}else if(nums[i] == key){i++;}else{swap(nums, --right, i);}}//分类讨论a:[l,left] b:[left+1,right-1] c:[right,r]int b = right - left - 1;int c = r - right + 1;if(c >= k){return qsort(nums,right,r,k);}else if(b+c >= k){return key;}else{return qsort(nums, l, left, k - b- c);}}public void swap(int[] nums, int l, int r){int tmp = nums[l];nums[l] = nums[r];nums[r] = tmp;}
    }

4、最小K个数 - 力扣(LeetCode) 

思路:

  1. 与上一题的思路一样只不过是在分类讨论的时候改变一下
  2. 代码:
    class Solution {public int[] smallestK(int[] nums, int k) {qsort(nums, 0, nums.length - 1, k);int[] ret = new int[k];for(int i = 0; i < k; i++){ret[i] = nums[i];}return ret;}public void qsort(int[] nums, int l, int r, int k){if(l >= r){return;}//随机生成基准int key = nums[new Random().nextInt(r-l+1)+l];//int left = l-1;int right = r+1;int i = l;while(i < right){if(nums[i] < key){swap(nums, ++left, i++);}else if(nums[i] == key){i++;}else{swap(nums, --right, i);}}//分类讨论int a = left - l +1;int b = right - left - 1;if(a > k){qsort(nums, l, left, k);}else if(a+b > k){return;}else{qsort(nums, right, r, k-a-b);}}public void swap(int[] nums, int l, int r){int tmp = nums[l];nums[l] = nums[r];nums[r] = tmp;}
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度网盘Android一二面凉经(2024)

百度网盘Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。 面试职位: 网盘主端研发组_Android高级研…

细说MCU用定时器控制单路DAC模块设计和输出锯齿波的实现方法

目录 一、参考工程 二、仅提供不同的配置 1、用定时器控制DAC输出 2、配置定时器参数 三、代码修改 四、 运行并观察显示效果 一、参考工程 本工程依赖作者的文章&#xff1a;细说MCU用单路DAC模块设计和输出锯齿波的实现方法-CSDN博客 https://wenchm.blog.csdn.net/ar…

Python 如何对上万、百万、亿级数据去重?

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 今天我们要一起探索一个让数据工程师、数据科学家和开发者们都头疼的问题&#xff1a;如何对海量数据进行去重。随着数据量的不断增长&#xff0c;我们在处理数据时&#xff0c;去重操作…

要么利用规则,要么打破规则

在这个充满规则和标准的世界里&#xff0c;我们常常被告知要如何生活、如何成功。但事实上&#xff0c;这些规则和标准往往限制了我们的潜力和创造力。本文将探讨如何不被外界规则所束缚&#xff0c;活出自己的风采。 规则的双刃剑 规则和标准可以为社会带来秩序&#xff0c;…

JavaScript进阶之构造函数数据常用函数

目录 一、深入对象1.1 创建对象的三种方式1.2 构造函数1.3 实例成员&静态成员 二、内置构造函数2.1 Object2.2 Array2.3 String常见实例方法2.4 Number 一、深入对象 1.1 创建对象的三种方式 利用对象字面量创建对象利用new object创建对象 const obj new Object({})利用…

Java | Leetcode Java题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution {public int missingNumber(int[] nums) {int n nums.length;int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} }

学习系列一:YOLO系列目标检测框架之间介绍及对比

YOLO系列目标检测框架之间介绍及对比 华为HCIP AI高级工程师证书&#xff0c; 华为HCIA AI证书&#xff0c;目前从事视觉算法工作 文章目录 YOLO系列目标检测框架之间介绍及对比前言一、YOLOv1二、YOLOv2三、YOLOv3四、YOLOv4五、YOLOv5及后续算法 前言 YOLO系列算法 YOLO 创…

树与二叉树学习笔记

树与二叉树 计算机中的树树的概念树的类型 什么是二叉树二叉树&#xff1a;定义与特点二叉树&#xff1a;前序、中序、后序遍历二叉树&#xff1a;深度、广度优先遍历二叉树&#xff1a;线索化二叉树&#xff1a;序列化与反序列化 haffman树平均编码长度构建haffman树haffman树…

数学建模算法汇总(全网最全,含matlab案例代码)

数学建模常用的算法分类 全国大学生数学建模竞赛中&#xff0c;常见的算法模型有以下30种&#xff1a; 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列分析马…

大模型应用—大模型赋能网络爬虫

大模型赋能网络爬虫 简单来说,网页抓取就是从网站抓取数据和内容,然后将这些数据保存为XML、Excel或SQL格式。除了用于生成潜在客户、监控竞争对手和市场研究外,网页抓取工具还可以用于自动化你的数据收集过程。 借助AI网页抓取工具,可以解决手动或纯基于代码的抓取工具的…

shell脚本语言的入门

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

腾讯技术创作特训营 -- SUPERWINNIE -- AI重塑社交内容

目录 1 什么是AI社交内容 2 案例拆解 3 用LLM做爆文选题 4 用LLM出爆文脚本提示词 1 什么是AI社交内容 任何一个因素被AI取代都是AI社交内容 2 案例拆解 数字人 资讯素材 录屏产品的素材&#xff08;小红书测试AI产品&#xff09; 脚本 素材 剪辑 3 用LLM做爆文选题 &…

帝国神话怎么样使用服务器开服(Myth Of Empires)

1、购买后登录服务器&#xff08;百度莱卡云&#xff09; 进入控制面板后会出现正在安装的界面&#xff0c;安装大约5分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、创建端口 一共需要用到三个端口&#xff08;游戏端口&#xff0c;查询端口&#x…

【刷题汇总 -- 压缩字符串(一)、chika和蜜柑、 01背包】

C日常刷题积累 今日刷题汇总 - day0181、压缩字符串(一)1.1、题目1.2、思路1.3、程序实现 2、chika和蜜柑2.1、题目2.2、思路2.3、程序实现 3、 01背包3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day018 1、压缩字符串(一) 1.1、题目 1.2、思路 读完…

vue3 vue页面根目录增加注释 keep-alive 不生效 需避开此位置

已参考官方文档如下&#xff0c;进行配置 Built-in Components | Vue.js 对应页面中配置 name defineOptions({name: "Users",inheritAttrs: false, }); 从Vue Devtools可以看到组件名字变成了Users&#xff0c;如下&#xff1a; 已配置一致后&#xff0c;仍不生…

【Linux】进程信号 --- 信号保存

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

【医学影像】RK3588+FPGA:满足远程诊疗系统8K音视频编解码及高效传输需求

医学影像 提供基于Intel平台、NXP平台、Rockchip平台的核心板、Mini-ITX主板、PICO-ITX主板以及工业整机等计算机硬件。产品板载内存&#xff0c;集成超高清编码/解码视频引擎&#xff0c;具有出色的数据处理能力和图形处理能力&#xff0c;功能高集成&#xff0c;可应用于超声…

【教学类-69-01】20240721铠甲勇士扑克牌涂色(男孩篇)

背景需求&#xff1a; 【教学类-68-01】20240720裙子涂色&#xff08;女孩篇&#xff09;-CSDN博客文章浏览阅读250次。【教学类-68-01】20240720裙子涂色&#xff08;女孩篇&#xff09;https://blog.csdn.net/reasonsummer/article/details/140578153 前期制作了女孩涂色延…

直播带货|主播、运营怎么考核 怎么分钱

在直播公司中&#xff0c;有两个非常重要的岗位&#xff1a;直播运营和主播。那么&#xff0c;直播公司应该如何正确发放工资呢&#xff1f;许多公司为这两个岗位的工资发放采取的是销售额提成的方式。 销售额提成存在一个问题&#xff1a;直播公司很容易通过广告费来刺激销售额…

MT6825磁编码IC在智能食品包装设备的应用

艾毕胜马达控制平台专家 MT6825磁编码IC&#xff0c;作为一款先进的传感器解决方案&#xff0c;在智能食品包装设备中的应用正日益广泛 MT6825磁编码IC&#xff0c;作为一款先进的传感器解决方案&#xff0c;在智能食品包装设备中的应用正日益广泛。它凭借卓越的性能和可靠性…