LeetCode215.数组中的第K个最大元素

news/2025/3/16 23:35:18/

题目

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例

输入: [3,2,1,5,6,4], k = 2
输出: 5输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4

思路

这个题我们可以尝试使用快速排序sort函数,对数组排完序之后输出倒数第k个元素即可

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {sort(nums.begin(), nums.end());return nums[nums.size() - k];}
};

但是这样子的时间复杂度是O(n logn)
对于需要O(n)时间复杂度的要求我们可以使用 快速选择 算法
在这里插入图片描述
在这里插入图片描述
官方题解代码

class Solution {
public:int quickselect(vector<int> &nums, int l, int r, int k) {if (l == r)return nums[k];int partition = nums[l], i = l - 1, j = r + 1;while (i < j) {do i++; while (nums[i] < partition);do j--; while (nums[j] > partition);if (i < j)swap(nums[i], nums[j]);}if (k <= j)return quickselect(nums, l, j, k);else return quickselect(nums, j + 1, r, k);}int findKthLargest(vector<int> &nums, int k) {int n = nums.size();return quickselect(nums, 0, n - 1, n - k);}
};
文章来源:https://blog.csdn.net/Stephen_Curry___/article/details/136404334
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1368036.html

相关文章

[机缘参悟-158] :西游记中的“佛” 、“道”之争

目录 前言 一、西游记中的佛教元素 1.1 佛教元素 1.2 西游记佛教思想 1.3 佛教的三界五行&#xff1a;物质世界 1.4 佛教中不在三界内&#xff0c;不在五行中&#xff1a;精神世界 二、西游记中的道教元素 2.1 主要元素 2.2 道家思想 三、“佛”如何兼容“道” 3.1 …

程序员视角的大语言模型,如何使用大语言模型

从程序员的视角来看&#xff0c;使用大语言模型&#xff08;LLMs&#xff09;主要涉及以下几个步骤&#xff1a; 选择合适的模型&#xff1a; 首先&#xff0c;需要确定哪个大语言模型最适合你的需求。不同的模型可能在不同的任务上有不同的表现&#xff0c;比如代码生成、代码…

Vue中<style scoped lang=“scss“>的含义

这段代码中的<style scoped lang"scss">是HTML和Vue框架结合使用时常见的一个模式&#xff0c;具体含义如下&#xff1a; scoped&#xff1a;这是一个Vue.js特有的属性&#xff0c;用来指定样式只应用于当前组件的元素。没有这个属性时&#xff0c;样式会全局应…

抽象类、模板方法模式

抽象类概述 在Java中abstract是抽象的意思&#xff0c;如果一个类中的某个方法的具体实现不能确定&#xff0c;就可以申明成abstract修饰的抽象方法&#xff08;不能写方法体了&#xff09;&#xff0c;这个类必须用abstract修饰&#xff0c;被称为抽象类。 抽象方法定义&…

剑指offer面试题20 顺时针打印矩阵

考察点 二维数组的遍历知识点 题目 分析 本题目要求从外向里顺时针打印每一个数字&#xff0c;这个题目也是二维数组的遍历&#xff0c;只要涉及到遍历就需要知道循环终止的条件是什么&#xff0c;以及每次怎么迭代。从外向里一圈一圈打印&#xff0c;所以通过审题也可以想到…

ssm172旅行社管理系统的设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

第七十一天 漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

第71天 漏洞发现-Web框架中间件&联动&Goby&Afrog&Xray&Awvs&Vulmap 知识点&#xff1a; 1、Bup简单介绍&使用说明 2、Xray简单介绍&使用说明 3、AWWS简单介绍&使用说明 4、Goby简单介绍&使用说明 5、Afrog简单介绍&使用说明 6、…

05 OpenCV图像混合技术

文章目录 理论算子示例 理论 其中 的取值范围为0~1之间 算子 addWeighted CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, double beta,double gamma, OutputArray dst, int dtype -1 ); 参数1&#xff1a;输入图像Mat …