当前位置:网站首页>力扣 215. 数组中的第K个最大元素
力扣 215. 数组中的第K个最大元素
2022-08-02 03:37:00 【熬不了夜哇】
题目
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

Java题解
//时间复杂度O(nlogk)
class Solution {
public int findKthLargest(int[] nums, int k) {
//PriorityQueue<Integer> heap=new PriorityQueue<Integer>((n1,n2)->n1-n2);//小根堆
PriorityQueue<Integer> heap=new PriorityQueue<Integer>();//默认小根堆
for(int n:nums){
heap.add(n);//队尾添加元素
if(heap.size()>k)//返回长度大于k时,把最小值(即根结点)删掉,保留当前最大的k个结点
heap.poll();//取出队首元素,(删除)
}
return heap.poll();
}
}Java知识点
PriorityQueue详解 可以处理动态数据流
堆(Heap)分为小根堆和大根堆两种。Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值。
| 方法 | 功能 |
| add(Element e) | 队尾添加元素 |
| clear() | 清空整个列队 |
| contains(Object o) | 检查是否包含当前参数元素,返回布尔类型 |
| offer(E e) | 添加元素 |
| peek() | 访问队首元素(不删除) |
| poll() | 取出队首元素,(删除) |
| remove(Object o) | 根据value删除指定元素 |
| size() | 返回长度 |
| isEmpty() | 判断队列是否为空,返回布尔类型 |
PriorityQueue默认小根堆
PriorityQueue<Integer> heap = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});PriorityQueue实现大根堆
方法一:重写compare方法
PriorityQueue<Integer> MaxHeap=new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
方法二:lambda表达式
// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s)
PriorityQueue<Integer> MaxHeap=new PriorityQueue<Integer>((n1,n2)->n2-n1);边栏推荐
- 复制延迟案例(3)-单调读
- 深度学习基础之批量归一化(BN)
- PHP5.6安装ssh2扩展用与执行远程命令
- 科研笔记(五) SLAC WiFi Fingerprint+ Step counter融合定位
- 深蓝学院-视觉SLAM十四讲-第七章作业
- Nexus 5手机使用Nexmon工具获取CSI信息
- Research Notes (6) Indoor Path Planning Method Based on Environment Perception
- matlab作图显示中文正常,保存图片中文乱码
- 树莓派上FFMPEG/VLC播放海康网络摄像仪视频
- 吴恩达机器学习系列课程笔记——第十八章:应用实例:图片文字识别(Application Example: Photo OCR)
猜你喜欢
随机推荐
开箱即用的职场办公常用功能:全文检索、便签、云笔记
jetracer_pro_2GB AI Kit system installation instructions
企业级的dns服务器的搭建
Research Notes (8) Deep Learning and Its Application in WiFi Human Perception (Part 1)
单目三维目标检测之CaDDN论文阅读
MySQL5.7的安装编译及报错的解决方法
arr的扩展方法、数组的遍历及其他方法
shell中常用的基础命令
Deep Blue Academy - Visual SLAM Lecture Fourteen - Chapter 5 Homework
复制延迟案例(1)-最终一致性
科研笔记(七) 基于路径规划和WiFi指纹定位的多目的地室内导航
三维目标检测之ROS可视化
LVS+Keepalived实现高可用的负载均衡
MapFi论文架构整理
详解CAN总线:什么是CAN总线?
树莓派4B安装OPENCV遇到ffmpeg库版本太高的问题【后续更新】
BOM学习
3D object detection dataset
Andrew Ng's Machine Learning Series Course Notes - Chapter 18: Application Example: Image Text Recognition (Application Example: Photo OCR)
PHP5.6安装ssh2扩展用与执行远程命令









