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

最小 k 个数

目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

二:题目思路

这道题,是在 快速排序 的基础上解决的,在此之前,请务必了解快排的实现逻辑。

        我们完成一次 数组分三块 的操作后,对这三块数组进行分析:

        三个区间的元素个数分别为 a = left - l + 1 ,b = (right - 1) - (left + 1) + 1 , c = r - right + 1。

        当 a > k 时,说明这 k 个最小的元素在 a 这个区间里,所以后面的两个区间不用管了,直接对 a 区间继续进行快速排序

        当 a + b >= k 时,说明这 k 个最小的元素一部分在 a 区间,一部分在 b 区间,又因为 b 区间元素都是相等的,所以可以直接返回

        剩余的情况,说明这 k 个最小的元素 包含 a区间 和 b 区间,一部分在 c 区间,再去 c 区间寻找前 k - a - b 个最小的元素。 

        完成上述过程后,数组可能不一定会全部排序成升序,但排序的区域足以返回结果了。

三:代码实现

    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);}}//寻找最小的 k 个数int a = left - l + 1;int b = (right - 1) - (left + 1) + 1;if(a > k) {qsort(nums,l,left,k);}else if(a == k || a + b >= k) {return;}else {qsort(nums,right,r,k - a - b);}}public void swap(int[] nums,int a,int b) {int c = nums[a];nums[a] = nums[b];nums[b] = c;}
http://www.dtcms.com/a/541647.html

相关文章:

  • 镇江建网站佛山市城乡住房建设局网站首页
  • LoRA个人理解
  • 网站备案 固定电话做响应网站
  • ROS2系列 (5) : 使用功能包组织C++节点
  • 信创真的能发展的起来吗?
  • 做属于自己公司的网站wordpress微信启动
  • 【教程】Latex简明使用教程
  • 石家庄市建设局网站信息公开免费php网站开发模板
  • 合合肥网站建设威海推广
  • 如何使用 Spring Security 实现细粒度的权限控制?
  • 柯桥教育网站建设深圳南山区网站建设公司
  • 亿赐客网站怎么样北京公司地址推荐
  • 秋招笔记-10.7
  • 2025-10-28 ZYZOJ aoao round 1 hetao1733837的record
  • 在线自助下单网站网站内容包括哪些
  • 企业网站免费模板深圳创意网站建设
  • h5游戏免费下载:弹珠打砖块游戏
  • mysql紧急恢复----gxl
  • 基于springboot的信息化在线教学平台的设计与实现
  • 6.1.3.2 大数据方法论与实践指南-开源大数据实时调度平台(StreamPark)
  • 网站建设mysql数据库电子商务系统的构成
  • C语言入门教程 | 第七讲:函数和程序结构完全指南
  • 佛山网站建设锐艺传播电气毕业设计代做网站
  • h5游戏免费下载:逗比测试
  • 英集芯 IP2326 15W快充2节/3节串联锂电池升压充电IC
  • 做jsp网站的步骤wordpress可视化编辑教程
  • 沈阳做网站的公司排名太平洋手机网参数对比
  • Stable Mean Teacher ---2025 IEEE
  • 【IEEE 2025】即插即用 SRMF 突破长尾困境!实现超高分辨率遥感图像的精准分割
  • 基于Detectron2的大坝涂层缺陷检测识别系统开发