提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、题目-数组中的第K个最大元素
1.题目描述
2.思路与代码
2.1 思路
2.2 代码
总结
提示:这里可以添加本文要记录的大概内容:
3月16日练习内容
提示:以下是本篇文章正文内容,下面案例可供参考
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1:
输入: [3,2,1,5,6,4], k = 2
输出: 5
示例 2:
输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/kth-largest-element-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1.方法1可以利用java内置排序算法对数组进行排序
2.将排完序的第length - k个数组输出
3.第2个方法可以利用最小堆
4.将数据放入最小堆,当数组里面的数据个数大于k时,输出元素即可
代码如下(示例):
class Solution {public int findKthLargest(int[] nums, int k) {//第一种方法//直接调用内置Api对数组进行排序Arrays.sort(nums);//输入数组第k个元素return nums[nums.length - k];// //第二种方法,利用最小堆// PriorityQueue queue = new PriorityQueue<>();// //将数据放入最小堆// for(int num : nums){// queue.add(num);// if(queue.size() > k){// queue.poll();// //出队列// }// }// //输出// return queue.peek();}
}
提示:这里对文章进行总结: