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

力扣HOT100之堆:215. 数组中的第K个最大元素


这道题是大厂面试的高频面试题,昨天面网易互娱的时候被问到了这道题,无论是手撕快速排序代码还是面试口头描述思路,我们都需要熟练掌握快速排序的写法,在面试中为了求稳,我们需要掌握最简单,最易记的一种实现方式,这里我推荐这个博主的快慢指针方法,通俗易懂,牢记这种方法,面试中更容易将快速排序写出来。
再回到本题,本题是需要求出数组中第K大的元素,因此我们并不需要将整个数组都进行快速排序,我们只需要将第K大的元素找出来即可,我们与视频中保持一致,使用升序排列。因此我们在进行过一轮快速排序后,直接判断枢轴所在的下标为多少,如果枢轴所在的下标恰好为nums.size() - K,则枢轴对应的元素恰好为数组中第K大的元素,我们直接将其赋值给result即可。若枢轴对应的下标大于nums.size() - K,那我们只需要对枢轴左侧的区间进行排序,右侧不需要管。若枢轴对应的下标小于nums.size() - K,那我们只需要对枢轴右侧的区间进行排序,左侧不需要管。
下面简单描述一下单次快速排序的过程:

  1. 对于待排序区间,我们将快指针fast和慢指针slow同时指向区间的第一个元素,枢轴指向区间的最后一个元素。
  2. fast指向的元素大于等于枢轴元素时,则fast向右移动一位,slow保持不动;当fast指向的元素小于枢轴元素时,则先交换slowfast指向的元素,再同时将fastslow右移一位。
  3. fast到达枢轴指向的元素时,循环结束,此时还需要交换slow和枢轴指向的元素,此时,slow指向的元素为枢轴,slow左侧的元素都小于nums[slow],右侧的元素都大于等于nums[slow],此时一轮排序结束。
    下面是对应的代码,但是程序耗时太长了,这真的叫快速排序吗😂我怎么觉得是慢速排序呢
class Solution {
public:int result;int findKthLargest(vector<int>& nums, int k) {quicksort(nums, 0, nums.size() - 1, k);return result;}void quicksort(vector<int>& nums, int begin, int end, int k){int pivot = nums[end];  //总是选取区间的最后一个元素作为枢轴int slow = begin, fast = begin;  //初始化快慢指针while(fast < end){if(nums[fast] >= pivot)  //快指针元素大于等于枢轴则快指针右移fast++;else{swap(nums[slow], nums[fast]);slow++;fast++;}}swap(nums[slow], nums[end]);   //交换慢指针与枢轴所指的元素if(slow > nums.size() - k)  //需要向左查找quicksort(nums, begin, slow - 1, k);else if(slow < nums.size() - k)  //需要向右查找quicksort(nums, slow + 1, end, k);else{   //找到第k大的元素了result = nums[slow];return ;}}
};

相关文章:

  • docker 安装 milvus standalone 版本 + attu
  • spark数据处理练习题番外篇【下】
  • 空间注意力机制
  • 如何判断一个bug,是前端还是后端的?
  • 积累-Vue.js 开发实用指南:ElementUI 与核心技巧
  • 【动作】动作标签分类的三大模块
  • 如何在看板中体现优先级变化
  • 【沉浸式求职学习day53】【Spring】
  • 3.3.1_1 检错编码(奇偶校验码)
  • 智能呼入系统助力酒店客服服务
  • 立足数字人文,深化历史叙事|科学智能赋能人文社科领域研究
  • 扁平表+递归拼树思想
  • PyTorch终极实战:从自定义层到模型部署全流程拆解​
  • JS深入之从原型到原型链
  • 替代爬虫!亚马逊API采集商品详情实时数据开发教程
  • 苹果签名应用掉签频繁原因排查,以及如何避免
  • 第十六章 I2C
  • python 中线程、进程、协程
  • 【动作】AVA:时空定位原子视觉动作视频数据集
  • java 数据结构-HashMap
  • 成都工程设计公司/独立站seo搜索优化
  • ps做网站首页怎么/免费外链网站seo发布
  • 网站建设项目规划书案例/免费发广告网站
  • 关于桥梁建设工程设公司网站/百度seo快速排名优化服务
  • 网站建设网站备案所需资料/苏州seo公司
  • 曲靖做网站价格/优化营商环境发言稿