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

Hot100-排序

1.快排

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

(1)第k大的元素在排序数组中的位置是nums.length - k

假设我们有一个数组nums = [3, 2, 1, 5, 6, 4],并且我们想找到第2大的元素。

步骤 1:排序数组

首先,我们对数组进行排序:

排序后的数组: [1, 2, 3, 4, 5, 6]

步骤 2:理解第k大元素的位置

在排序后的数组中,第2大的元素是5。它位于索引4的位置(从0开始计数)。

(2)快排的思路:

先分块,再递归。

快速排序算法—图文详解,一篇就够了!-CSDN博客

class Solution {//快排:/*分区,随便找一个中间值x,数组在x左边的值应该都<=x,在x右边的值应该都>=x从子数组 a[l⋯r] 中选择任意一个元素 x 作为主元,调整子数组的元素使得左边的元素都小于等于它,右边的元素都大于等于它, (递归的思想)x 的最终位置就是 第k大的元素。*//*快排:1.分区 2.递归找khttps://blog.csdn.net/qq_39181839/article/details/109478094*/public int findKthLargest(int[] nums, int k) {//第k大元素在排序数组中的位置是nums.length - kreturn quicksort(nums, 0, nums.length-1, nums.length - k);}public int quicksort(int[] nums, int left, int right, int k){//递归终止条件if (left >= right){return nums[left];}//单层递归逻辑int p = partition(nums, left, right);if ( p==k){return nums[p];}else if (p < k){//需要在右侧分区继续查找return quicksort(nums, p+1, right, k);}else {// 需要在左侧分区继续查找return quicksort(nums, left, p-1, k);}}public int partition(int[] nums, int left, int right){int base = nums[left];while(left<right){//从右往左//一步步向左移,直到找到比base小的数停下来,替换此时🐻l所在位置的元素while(left<right && base <=nums[right]){right--;}nums[left] = nums[right];//从左往右while(left<right && base >=nums[left]){left++;}nums[right] = nums[left];   }//此时🐻l、🐻r指向同一元素//base替换此元素nums[left] = base;return left;}
}

http://www.lryc.cn/news/396609.html

相关文章:

  • 树链剖分相关
  • 如何将Grammarly内嵌到word中(超简单!)
  • OTG -- 用于FPGA的ULPI接口芯片USB3320讲解(续)
  • 了解劳动准备差距:人力资源专业人员的战略
  • SAP PS学习笔记02 - 网络,活动,PS文本,PS文书(凭证),里程碑
  • Github 2024-07-07php开源项目日报 Top9
  • 算法训练(leetcode)第二十六天 | 452. 用最少数量的箭引爆气球、435. 无重叠区间、763. 划分字母区间
  • Ubuntu 下 Docker安装 2024
  • 发送者的可靠性
  • Profibus_DP转ModbusTCP网关模块连马保与上位机通讯
  • 移动应用:商城购物类,是最常见的,想出彩或许就差灵犀一指
  • linux 查看历史命令列表来访问之前的内容的命令是:history
  • NAS免费用,鲁大师 AiNAS正式发布,「专业版」年卡仅需264元
  • spring监听事件
  • 微软发布E2 TTS: 一种简单但效果优秀的文本转语音技术
  • python爬虫加入进度条
  • 力扣844.比较含退格的字符串
  • 用户特征和embedding层做Concatenation
  • Ubuntu20.04下修改samba用户密码
  • PHP老照片修复文字识别图像去雾一键抠图微信小程序源码
  • 识别色带详解解释
  • 如何用 Python 绕过 cloudflare(5秒盾) 抓取数据:也不是很难嘛!
  • 掌握Conda配置术:conda config命令的深度指南
  • MySQL:left join 后用 on 还是 where?
  • openfoam生成的非均匀固体Solid数据分析、VTK数据格式分析、以及paraview官方用户指导文档和使用方法
  • JVM:类的生命周期
  • 几种不同的方式禁止IP访问网站(PHP、Nginx、Apache设置方法)
  • 经典 SQL 数据库笔试题及答案整理
  • JS代码动态打印404页面源码
  • 从“钓”到“管”:EasyCVR一体化视频解决方案助力水域安全管理