【重点!!!】【堆】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; “共享…

Linux基础入门(一)

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

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

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

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

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

计算机系统结构 期末复习

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

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

来源&#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…

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

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

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

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

OpenAI 是如何被10亿美元收买了“非盈利”灵魂的?

来源&#xff1a;AI科技评论编译&#xff1a;陈彩娴、琰琰近日&#xff0c;一篇名为“How OpenAI Sold its Soul for $1 Billion”&#xff08;OpenAI是如何因为 10 亿美元出卖自己的灵魂&#xff09;的文章在 Reddit 上引起了热议。文章作者 Alberto Romero 抨击知名的非营利机…

【算法】蓝桥杯dfs深度优先搜索之排列组合总结

【导航】 上一篇文章 → 《【算法】蓝桥杯dfs深度优先搜索之凑算式总结》 为了重申感谢之意&#xff0c;再次声明下文的大部分灵感均来自于【CSDN】梅森上校《JAVA版本&#xff1a;DFS算法题解两个例子&#xff08;走迷宫和求排列组合数&#xff09;》  强烈大家去上面那篇文…

人工神经网络能否驾驭生物神经元的“浓稠”程度?5到8层可能并非极限

来源&#xff1a;图灵人工智能编译&#xff1a;李扬霞编辑&#xff1a;青暮计算神经科学家通过训练人工神经网络来模仿生物神经元&#xff0c;提供了一种探讨单个脑细胞复杂性的新方法。虽然我们糊状的大脑似乎与计算机处理器中的芯片大相径庭&#xff0c;但科学家对两者的比较…

困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...

文章来源&#xff1a;机器之心作者&#xff1a;Ben Brubaker原文链接&#xff1a;https://www.quantamagazine.org/how-bells-theorem-proved-spooky-action-at-a-distance-is-real-20210720/我们理所当然地认为&#xff0c;世界上某个地方发生的一件事不会立即对远方的事物产生…

Jupyter notebook 导入和卸载 conda 虚拟环境

一、导入 进入Anaconda Prompt&#xff0c;激活要使用的虚拟环境。 conda activate xxx # 你要使用的虚拟环境名称安装 ipykernel 插件&#xff0c; 建议使用 pip 进行安装&#xff0c; conda 安装容易失败 pip install ipykernel安装完成之后&#xff0c;键入以下命令 pyt…

处理器管理与进程管理

4.python练习 1.观察父进程、子进程 2.观察进程运行状态 3。输入多个作业的作业编号&#xff0c;到达时间&#xff0c;所需CPU时间&#xff0c;形成列表&#xff0c;以备算法使用。 转载于:https://www.cnblogs.com/hclhechunlu/p/10580946.html

小白 LeetCode 242 有效的字母异位词

字母异位词 字符串由相同字母组成&#xff0c;但允许排列顺序不同。 如“aaabbb” 与 “ababab” 是字母异位词&#xff0c; 而“aabb” 与 “ab” 不是字母异位词。 题目&#xff1a;给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例…

LSTM之父:吐槽了两年,来划划重点:“这5篇最高引论文都源于我们。”

来源&#xff1a;AI科技评论作者&#xff1a;陈彩娴编辑&#xff1a;青暮昨晚&#xff0c;“递归神经网络之父”Jrgen Schmidhuber 在推特上亲自发文&#xff0c;称目前引用数最高的5项神经网络工作都基于他的团队成果&#xff0c;一时引起了网友的广泛讨论。这并不是他首次发声…

初学者配置环境变量

1. 首先选择计算机右击&#xff0c;选择最后一个属性&#xff0c;进入属性面板 2. 点击“高级系统设置”&#xff0c;点击“环境变量” 3. 在“系统变量”的处配置所需要配置的环境变量&#xff0c;点击“新建”按钮 4. 配置java的环境变量 JAVA_HOME 、CLASSPATH 、 Path5. JA…

小白 LeetCode 5605 检查两个字符串数据是否相等

题目&#xff1a;给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。 示例 1&#xff1a; 输入&#xff1a;word1 [&q…