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

Q215 数组中第K大的元素

思路

可以用排序,但是不用全有序
还有个要求是O(n)

快排改版

快排只排需要的部分

public int findKthLargest(int[] nums, int k) {return quickSort(nums, 0, nums.length-1, nums.length-k);}public static int quickSort(int[] nums, int low, int high, int k){if (low<high){int pivot = partition(nums, low, high);if (pivot == k){return nums[pivot];}else if (pivot > k){return quickSort(nums, low, pivot-1, k);}else {return quickSort(nums, pivot+1, high, k);}}}public static int partition(int[] nums, int low, int high){int pivot = nums[high];while (low<high){while (low<high && nums[low] <= pivot){low++;}nums[high] = nums[low];while (low<high && nums[high] >= pivot){high--;}nums[low] = nums[high];}nums[low] = pivot;return low;}
http://www.lryc.cn/news/432794.html

相关文章:

  • Java8特性:分组、提取字段、去重、过滤、差集、交集
  • Maven快速上手使用指南的笔记
  • MySQL面试题大全和详解,含SQL例子
  • java-redis-雪崩
  • 如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐
  • SimHash算法详解与应用
  • RasberryPi 3B树莓派基本配置
  • Docker编译环境的使用(ubuntu)
  • 认知杂谈53
  • 量子计算信息安全威胁与应对策略分析
  • Oracle(112)如何使用RMAN恢复数据库?
  • I2C通信协议
  • 使用Python实现智能信用评分系统
  • RocketMQ之发送消息源码分析
  • 使用宝塔面板安装mrdoc
  • C++操作符重载实例
  • Linux高效进程控制的实战技巧
  • 使用条件变量实现线程同步:C++实战指南
  • Spark2.x 入门: KMeans 聚类算法
  • 如何快速练习键盘盲打
  • Flask中实现WebSocket需要什么组件
  • java8 Stream流详解
  • 通信工程学习:什么是AB地址总线、DB数据总线、CD控制总线
  • CP AUTOSAR标准之EthernetInterface(AUTOSAR_SWS_EthernetInterface)(更新中……)
  • Windows系统离线安装使用pm2 管理进程
  • 4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)
  • 【深度学习】向量化
  • 基于canal的Redis缓存双写
  • 以太网交换机工作原理学习笔记
  • ECCV`24 | 蚂蚁集团开源风格控制新SOTA!StyleTokenizer:零样本精确控制图像生成