我是靠谱客的博主 等待大地,这篇文章主要介绍leetcode215. 数组中的第K个最大元素1.题目描述2.解题思路3.代码实现,现在分享给大家,希望可以做个参考。

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.解题思路

参考:https://mm2mm.blog.csdn.net/article/details/102916815

3.代码实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution(object): def partition(self, start, end, nums): if start < end: i = start j = end + 1 K = nums[start] while i < j: i += 1 while i < end and nums[i] < K: i += 1 j -= 1 while j > start and nums[j] > K: j -= 1 if i < j: nums[i], nums[j] = nums[j], nums[i] nums[start], nums[j] = nums[j], nums[start] return j # 注意和原始快排的区别 else: return end def findKthLargest(self, nums, k): """ :type nums: List[int] :type k: int :rtype: int """ # 准换成求第k小 k = len(nums) - k + 1 start=0 end=len(nums)-1 index = self.partition(start, end, nums) while True: if index == k - 1: return nums[index] elif index < k - 1: start = index + 1 index=self.partition(start, end, nums) else: end = index - 1 index=self.partition(start, end, nums)

 

最后

以上就是等待大地最近收集整理的关于leetcode215. 数组中的第K个最大元素1.题目描述2.解题思路3.代码实现的全部内容,更多相关leetcode215.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部