题目
leetcode 215 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
总结
方法一:暴力法
要找到数组中的第K个最大元素,首先可以想到排序,再遍历。
此种方法的时间复杂度最低为O(nlogn)。
方法二:基于partition的分治法
首先可以想到快速排序可以找到第index大的元素。
时间复杂度为O(n)。
class Solution {
public int findKthLargest(int[] nums, int k) {
int len = nums.length;
if (k > len) {
return 0;
}
int start = 0;
int end = len - 1;
int index = partition(nums, start, end);
while (index != len-k) {
if (index > len-k) {
end = index-1;
index = partition

这篇博客介绍了如何在未排序的数组中找到第K个最大的元素,包括三种方法:排序后查找、基于partition的分治法和使用最小堆(优先队列)。详细讨论了每种方法的时间复杂度,其中优先队列方法在保持O(nlogk)复杂度的同时能更高效地解决问题。
最低0.47元/天 解锁文章
1748





