题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/)

题目描述:

在未排序的数组中找到第 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 ≤ 数组的长度。

思路:

排序题

思路一:$nlog(n)$排序

思路二:$nlog(k)$堆排序

  1. 库函数
  2. 手写堆排

思路三:平均时间$O(n)$,最差$O(n^2)$部分的快排

快排每次可以固定一个数位置, 只需要判断是否在要找的位置上就可以了!

代码:

思路一:排序

class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:return sorted(nums, reverse = True)[k - 1]

思路二:堆排序

1, 库函数

class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:return heapq.nlargest(k, nums)[-1]

思路二:

2, 手写

class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:def adjust_heap(idx, max_len):left = 2 * idx + 1right = 2 * idx + 2max_loc = idxif left < max_len and nums[max_loc] < nums[left]:max_loc = leftif right < max_len and nums[max_loc] < nums[right]:max_loc = rightif max_loc != idx:nums[idx], nums[max_loc] = nums[max_loc], nums[idx]adjust_heap(max_loc, max_len)# 建堆n = len(nums)for i in range(n // 2 - 1, -1, -1):adjust_heap(i, n)#print(nums)res = Nonefor i in range(1, k + 1):#print(nums)res = nums[0]nums[0], nums[-i] = nums[-i], nums[0]adjust_heap(0, n - i)return res

思路三:快排

class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:def partition(left, right):pivot = nums[left]l = left + 1r = rightwhile l <= r:if nums[l] < pivot and nums[r] > pivot:nums[l], nums[r] = nums[r], nums[l]if nums[l] >= pivot:l += 1if nums[r] <= pivot:r -= 1nums[r], nums[left] = nums[left], nums[r]return rleft = 0right = len(nums) - 1while 1:idx = partition(left, right)if idx == k - 1:return nums[idx]if idx < k - 1:left = idx + 1if idx > k - 1:right = idx - 1

更多题解:

九四干:[LeetCode] 题目汇总(持续更新)​zhuanlan.zhihu.com

vector删除第i个元素_[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. LeetCode 215. 数组中的第K个最大元素(快速排序)

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

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

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

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

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

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

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

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

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

  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. 蓝盾第三代AI防火墙分析
  2. 关于@DQ的留言回复
  3. Telent 远程登录服务
  4. 我敢说,这是最全的常用设计模式汇总
  5. 百度内部培训PPT流出:数据分析的道与术
  6. 【工作经验分享】java图片转文字
  7. 面试题:各大公司Java后端开发面试题总结 已看1 背1 有用 链接有必要看看
  8. 语言怎么得到直流电压并采样_250V10A高频直流电源/大电流直流稳压稳流电源
  9. Visual C++ 2010 (中文)学习版 安装教程
  10. vue生命周期的快速记忆方法
  11. r语言quantmond_R中的关于极值理论的包
  12. 固定资产取消月末结账时报错,提示:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录...
  13. luci编程 openwrt_Luci流程分析(openwrt下)
  14. 鼠标悬浮移出控制div的显示与隐藏
  15. URL重写有几种方式
  16. 睡眠键重启计算机,Windows10进入睡眠模式后按任意键会自动重启怎么办
  17. 中国GMP级细胞因子市场现状及未来发展趋势
  18. 详解react生命周期
  19. ╮(╯▽╰)╭ 数蚂蚁
  20. 首份成绩单交出却遇重挫,被阿里对狙的贝壳还能“涨”多快?

热门文章

  1. android 自动登录机制,Android登录记住密码以及自动登录的实现
  2. python argparse举例说明
  3. pyqt5实战之简陋的计算器
  4. 构造函数(constructor)与原型链(prototype)关系
  5. Android 之 Fagment 完全解析
  6. poj3934Queue(dp)
  7. 自定义ClassLoader实现java应用核心逻辑模块热部署
  8. 【总结】IE6,IE7,IE8,Firefox兼容的css hack 补充!
  9. [译]在启用浏览器功能的INFOPATH表单中实现基于SQL SERVER的多级联动的下拉式列表...
  10. 基于SSM实现公交路线管理系统