1. 题目

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

示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5示例 2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4说明:
你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 快排解题

  • 参考:寻找数组内第K大的元素
  • 类似题目:LeetCode 973. 最接近原点的 K 个点(排序/优先队列/快排)
class Solution { //C++
public:int findKthLargest(vector<int>& nums, int k) {k = nums.size()-k;//排序后的位置return findKthL(nums,k,0,nums.size()-1);}
private:void selectMid(vector<int>& nums, int left, int right){int mid = left+((right-left)>>1);if(nums[mid] > nums[right])swap(nums[mid],nums[right]);if(nums[left] > nums[right])swap(nums[left], nums[right]);if(nums[mid] > nums[left])swap(nums[mid], nums[left]);}int findKthL(vector<int>& nums, int &k, int left, int right){selectMid(nums,left,right);//三数取中int p = nums[left];int i = left, j = right;while(i < j){while(i < j && nums[j] > p)j--;swap(nums[i], nums[j]);while(i < j && nums[i] <= p)i++;swap(nums[i], nums[j]);}if(i == k)return nums[i];else if(i < k)return findKthL(nums,k,i+1,right);elsereturn findKthL(nums,k,left,i-1);}
};

class Solution { //C++ ,简化版
public:int findKthLargest(vector<int>& nums, int k) {return findk(nums,0,nums.size()-1, nums.size()-k);}int findk(vector<int>& nums, int l, int r, int k){int p = nums[l];int i = l, j = r;while(i < j){while(i < j && nums[j] > p)j--;while(i < j && nums[i] <= p)i++;swap(nums[i],nums[j]);}swap(nums[i], nums[l]);if(i == k)return nums[i];if(i < k)return findk(nums, i+1, r, k);elsereturn findk(nums, l, i-1, k);}
};

56 ms 9.9 MB

python3 解答

class Solution:# py3def findKthLargest(self, nums: List[int], k: int) -> int:def findk(l, r, k):p = nums[l];i = lj = rwhile i < j:while i < j and nums[j] > p:j -= 1while i < j and nums[i] <= p:i += 1t = nums[i]nums[i] = nums[j]nums[j] = tt = nums[i]nums[i] = nums[l]nums[l] = tif i == k:return nums[i]elif i < k:return findk(i+1, r, k)else:return findk(l, i-1, k)return findk(0,len(nums)-1, len(nums)-k)

1032 ms 19.7 MB

LeetCode 215. 数组中的第K个最大元素(快速排序)相关推荐

  1. ⭐算法入门⭐《哈希表》中等05 —— LeetCode 215. 数组中的第K个最大元素

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给定整数数组nums和 ...

  2. 力扣(LeetCode)215. 数组中的第K个最大元素(C语言)

    一.环境说明 本文是 LeetCode 215题 : 数组中的第K个最大元素,使用c语言实现. 快速选择.查找无序数组的利器! 测试环境:Visual Studio 2019. 二.代码展示 void ...

  3. vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素

    题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) 题目描述: 在未排序的数组中找到第 k 个最大的元素.请 ...

  4. LeetCode 215 数组中的第K个最大元素

    题目描述 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大 的元素,而不是第 k 个不同的元素. 题解 快速排序 代码 class Solution { pub ...

  5. leetcode 215.数组中的第K个最大元素

    难度:中等 频率:250 ** 题目:给定整数数组nums和整数k,清返回数组中第K个最大的元素. 清注意你要找的是数组排序后的第K个最大的元素,而不是第K个不同的元素. ** ** 题目类型: 经典 ...

  6. Leetcode 215. 数组中的第K个最大元素 解题思路及C++实现

    解题思路: 用最小堆来存储k个最大的值,遍历一次nums容器,然后返回最小堆中最上面节点的值即可. C++中使用priority_queue来实现最小堆.代码如下: class Solution { ...

  7. 2022-1-27 Leetcode 215.数组中的第 k 个最大元素

    借助 STL class Solution {public:int findKthLargest(vector<int>& nums, int k) {sort(nums.begi ...

  8. 【LeetCode】【HOT】215. 数组中的第K个最大元素(优先队列)

    [LeetCode][HOT]215. 数组中的第K个最大元素 文章目录 [LeetCode][HOT]215. 数组中的第K个最大元素 package hot;import java.util.Co ...

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

    215. 数组中的第 K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数 组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

最新文章

  1. ASP.NET: 简要分析Table类的使用
  2. LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】
  3. 《中国人工智能学会通讯》——5.4 结 论
  4. 正则表达式基本语法规范
  5. JS 中 Date() 的其他操作集锦
  6. 情况控件Android layout_weight用法图解
  7. NDK编译mupdf1.1小记
  8. 趋势杀毒软件无法更新
  9. 京东T9架构师手把手教你怎么写年薪50万的java简历
  10. wps 将html转为word,用WPS快速将网页内容转换为WORD文档
  11. ndwi是什么意思_NDWI是什么意思
  12. linux aria2 离线,使用aria2做离线下载
  13. Windows server 2012 主域+辅域
  14. 供给云saas平台小程序赋能门店增加销售额
  15. Matlab小实例(一)
  16. linux下载流量和上传流量,通过linux的tc工具简单实现上传和下载的流量控制
  17. 2022 GopherChina 想听什么由你做主!
  18. 韩国仁川机场乐天免税店买买买!
  19. 追风去,不如造风来——致敬蚂蚁区块链创新大赛中的参与者们
  20. postman-模拟上传图片

热门文章

  1. 嵌入式常见笔试题总结(4)
  2. psql切换schema_PostgreSQL教程(二):模式Schema详解
  3. 在vue.js引用图片的问题
  4. 谈谈JDK8中的字符串拼接
  5. php调用webservice报错Class 'SoapClient' not found
  6. linux-3.4.2移植到FL2440上(一)--只是基本移植
  7. [Python] NotImplemented 和 NotImplementedError 区别
  8. 动态规划 POJ 1088 滑雪
  9. linux下多线程之pthread_detach(pthread_self())
  10. VS2008制作安装包