【重点!!!】【堆】215.数组中的第K个最大元素

题目
在这里插入图片描述

法1:小根堆

最大的K个元素 => 小根堆(类似上窄下宽的梯形)
最小的K个元素 => 大根堆(类似倒三角形)
必须掌握!!!

class Solution {public int findKthLargest(int[] nums, int k) {PriorityQueue<Integer> q = new PriorityQueue<>();for (int i = 0; i < k; ++i) {q.offer(nums[i]);}for (int i = k; i < nums.length; ++i) {if (nums[i] > q.peek()) {q.poll();q.offer(nums[i]);}}return q.peek();}
}

法2:基于快排

class Solution {public int findKthLargest(int[] nums, int k) {List<Integer> list = new ArrayList<>();for (int i : nums) {list.add(i);}return quickSelect(list, k);}public int quickSelect(List<Integer> list, int k) {int n = list.size();Random rand = new Random();int rInx = rand.nextInt(n); // 生成0 ~ n-1之间的整数List<Integer> big = new ArrayList<>();List<Integer> same = new ArrayList<>();List<Integer> small = new ArrayList<>();for (int i = 0; i < n; ++i) {if (list.get(i) > list.get(rInx)) {big.add(list.get(i));} else if (list.get(i) == list.get(rInx)) {same.add(list.get(i));} else {small.add(list.get(i));}}if (big.size() >= k) {return quickSelect(big, k);} else if (k > (big.size() + same.size())) {return quickSelect(small, k - (big.size() + same.size()));} else {return list.get(rInx);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 系列之(1)Spring-framework 调试环境搭建

调试环境&#xff1a; JDK1.8 Gradle IDEA Git 一、开始代码 clone 将 spring-framework 项目 fork 到自己的代码仓&#xff0c;方便自己加注释。下载好 Gradle &#xff0c;用 idea 打开项目&#xff0c;进行初步构建。 参考文档&#xff1a;官方文档 二、预编译 spring-oxm&a…

计算机网络知识归纳

计算机网络 第一章 概述 1.1 计算机网络在信息时代中的作用 互联网的两个重要基本特点&#xff1a;1.连通性、2.共享 “资源”指的是网络中所有的网络软件、硬件、数据和通信等等资源 硬件资源、软件资源、数据资源、信道资源&#xff08;信号传输的媒介&#xff09; “共享…

PyTorch 之 requires_grad,requires_grad_(),grad_fn

x.grad_fn和x.requires_grad为x的属性x.grad_fn&#xff1a;积分方法名&#xff0c;默认为Nonex.requires_grad&#xff1a;是否积分的属性&#xff0c;默认为Falsex.requires_grad_()&#xff1a;设置积分的方法&#xff0c;设置之后requires_grad为True """T…

flutter 获取设备屏幕大小

import dart:ui; var s window.physicalSize;print(s);转载于:https://www.cnblogs.com/pythonClub/p/10567811.html

Linux基础入门(一)

Linux为何物 Linux就是一个操作系统&#xff0c;就像你已经已经知道的window、macOS系统一样&#xff0c;至于操作系统是什么&#xff0c;就不用过多解释了 Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本…

利用群体智慧,进行大规模的事实审核

来源&#xff1a;混沌巡洋舰为了应对虚假信息&#xff0c;社交媒体网络和新闻机构经常雇佣事实核查员来区分真假。但事实核查人员只能评估网上流传的一小部分故事。麻省理工学院研究人员的一项新研究提出了另一种方法: 研究指出来自普通读者群体的众包准确性判断&#xff0c;实…

torch.randn与torch.rand的区别

randn torch.randn(*sizes, outNone) → Tensor返回一个包含了从标准正态分布中抽取的一组随机数的张量 size&#xff1a;张量的形状 out&#xff1a;结果张量 rand torch.rand(*sizes, outNone) → Tensor[0,1)之间的均匀分布

xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd报...

https://blog.csdn.net/qq_36611526/article/details/79067159 今天遇到个问题 文件内引入某个资源 pom.xml头部http://maven.apache.org/xsd/maven-4.0.0.xsd"报错。 后来各种百度发现是包的问题&#xff1a; 1、找到maven的包的位置&#xff1a;window->preferences-…

解决git关联的的文件颜色、小图标

按WinR键打开运行对话框&#xff0c;输入 regedit.exe &#xff0c;准备修改注册表找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer&#xff1b;新建一个键名称为 “Max Cached Icons” 数据设置为 “2000”&#xff1b;重启一下电脑&#xff0c;…

Cerebras发布全球首个人类大脑规模的AI解决方案

CEREBRAS来源&#xff1a;IEEE电气电子工程师Cerebras Systems公司的CS-2人工智能训练计算机包含了世界上最大的单芯片&#xff0c;该公司透露&#xff0c;在计算机上增加新的存储系统可以提高神经网络的规模&#xff0c;它可以扩大至现有最大模型的100倍&#xff0c;可支持超过…

《动手学深度学习 PyTorch版》学习笔记(一):数据操作

一、数据操作 在PyTorch中&#xff0c;torch.Tensor是存储和变换数据的主要工具。 "tensor"这个单词一般可译作“张量”&#xff0c;张量可以看作是一个多维数组。 标量可以看作是0维张量&#xff0c;向量可以看作1维张量&#xff0c;矩阵可以看作是二维张量。1、t…

计算机系统结构 期末复习

一&#xff0e;名词解释 虚拟机&#xff1a;指通过软件模拟具有完整硬件系统功能的&#xff0c;运行在一个完全隔离环境中的完整计算机系统系统加速比&#xff1a;同一个任务在系统改进前花费总时间和在系统改进后花费总时间的比率Amdahl定律&#xff1a;计算计算机系统中某个…

Redis数据持久化、数据备份、数据的故障恢复

1.redis持久化的意义----redis故障恢复   在实际的生产环境中&#xff0c;很可能会遇到redis突然挂掉的情况&#xff0c;比如redis的进程死掉了、电缆被施工队挖了&#xff08;支付宝例子&#xff09;等等&#xff0c;总之一定会遇到各种奇葩的现象导致redis死掉&#xff0c;…

机器学习如何彻底改变游戏中的物理模拟

来源&#xff1a;AI科技评论编译&#xff1a;琰琰编辑&#xff1a;王晔量子力学奠基者之一、英国理论物理学家保罗狄拉克&#xff08;Paul Dirac&#xff09;在1929年说过&#xff1a;“大部分物理和化学所需要的数学理论的定律都是已知的&#xff0c;但这些定律的方程太复杂无…

《动手学深度学习 PyTorch版》学习笔记(二):自动求梯度

一、自动求梯度 1、requires_grad_(), detach(), torch.no_grad()的区别 参考博客&#xff1a;https://www.jianshu.com/p/ff74ccae25f3 2、.grad_fn 每个Tensor都有一个.grad_fn属性&#xff0c;该属性即创建该Tensor的Function, 就是说该Tensor是不是通过某些运算得到的&am…

学习计划1

今天开始着手做热词的项目&#xff0c;但是对于数据的处理仍然没有好的办法&#xff0c;网上最多的方法便是用C#操作&#xff0c;但是在尝试之后仍然没有进展转载于:https://www.cnblogs.com/ljysy/p/10574018.html

线性表——顺序表

1 算法思想&#xff1a;顺序遍历整个链表&#xff0c;找出最小值元素&#xff0c;用一个min存储这个值&#xff0c;同时将最后一个元素填补此值#define Maxsize 100 typedef Elemtype int typedef struct{Elemtype data[Maxsize];int length; }bool delmin(sqlist &L,Elem…

重新认识区块链:1550余个应用案例带来的启示

来源&#xff1a;资本实验室&#xff0c;本文摘自《2021全球区块链应用市场报告》当我们谈论区块链的时候&#xff0c;但凡对区块链有所了解的人都能够就相关主题或多或少地表达出自己的一些见解。例如&#xff1a;从技术体系上看&#xff0c;区块链是分布式数据存储、点对点传…

线性表——链表

#include <iostream> #include <bits/stdc.h> using namespace std;typedef int Elemtype; //定义单链表 typedef struct Lnode{Elemtype data;struct Lnode *next; }Lnode,*Linklist; int a[4]{1,2,3,4}; int n4;//建立不带头节点的链表 void buildlist(Lnode *L)…

《动手学深度学习 PyTorch版》学习笔记(三):线性回归

线性回归输出是一个连续值&#xff0c;因此适用于回归问题。回归问题在实际中很常见&#xff0c;如预测房屋价格、气温、销售额等连续值的问题。 一、基本要素 摘自原书 模型定义 设房屋的面积为 x1&#xff0c;房龄为 x2&#xff0c;售出价格为 y。我们需要建立基于输入 x…