【每日一题】【优先队列、迭代器、lambda表达式】2022年1月15日-NC119 最小的K个数
描述
方法:优先队列、迭代器、lambda表达式
import java.util.*;
public class Solution {
    //堆的使用、lambda表达式的使用、迭代器的使用
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> res = new ArrayList<>();
        if(input.length == 0 || k == 0) {
            return res;
        }
        //怎么判断是大根堆还是小根堆,目的是大根堆
        PriorityQueue<Integer> queue = new PriorityQueue<>((a, b) -> b - a);
        for(int i = 0; i < input.length; i++) {
            if(queue.size() < k) {
                queue.add(input[i]);
            } else if(queue.peek() > input[i]) {
                queue.poll();
                queue.add(input[i]);
            }
        }
        Iterator<Integer> iterator = queue.iterator();
        while(iterator.hasNext()) {
            res.add(iterator.next());
        }
        return res;
    }
}
要保证堆的大小不能超过K,然后遍历数组,因为是最大堆,也就是堆顶元素是堆中最大的,如果遍历的元素小于堆顶元素,就把堆顶元素给移除,然后再把当前遍历的元素加入到堆中,最后在把堆中元素转化为数组即可。
怎么判断是大根堆:(a,b) -> b - a,小-大
【每日一题】【优先队列、迭代器、lambda表达式】2022年1月15日-NC119 最小的K个数的更多相关文章
- 《剑指offer》第四十题(最小的k个数)
		
// 面试题40:最小的k个数 // 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8 // 这8个数字,则最小的4个数字是1.2.3.4. #include < ...
 - 剑指 Offer 40. 最小的k个数 + 优先队列 + 堆 + 快速排序
		
剑指 Offer 40. 最小的k个数 Offer_40 题目描述 解法一:排序后取前k个数 /** * 题目描述:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7. ...
 - 2022年5月11日,NBMiner发布了41.3版本,在内核中加入了100%LHR解锁器,从此NVIDIA的显卡再无锁卡一说
		
2022年5月11日,NBMiner发布NBMiner_41.3版本,主要提升了稳定性. 2022年5月8日,NBMiner发布NBMiner_41.0版本,在最新的内核 ...
 - 关于2022年3月9日之后Typora登录不了--已解决
		
p.s.今天是2022.7.27,软件版本:13.6.1 (以下所有方法,亲自尝试后整理出的) 报错信息: This beta version of typora is expired, please ...
 - .NET Conf 2022 – 11 月 8 日至 10 日
		
.NET Conf 2022 下周就正式开启了,时间是美国时间的 11月8日至10日..NET Conf 2022是一个免费的,为期三天的, 虚拟开发人员活动提供多种实时会话,其中包括来自社区和 .N ...
 - <每日一题>题目5:生成器表达式面试题
		
题目: def demo(): for i in range(4): yield i g = demo() g1 = (i for i in g ) g2 = (i for i in g1) prin ...
 - 每日一题 - 剑指 Offer 40. 最小的k个数
		
题目信息 时间: 2019-06-30 题目链接:Leetcode tag: 快排 难易程度:中等 题目描述: 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3. ...
 - 7月15日考试 题解(链表+状压DP+思维题)
		
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
 - 剑指offer——python【第29题】最小的K个数
		
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路 先排序后取数,排序可以用冒泡,插入,选择,快排,二分法等等, ...
 - 代码题(3)— 最小的k个数、数组中的第K个最大元素、前K个高频元素
		
1.题目:输入n个整数,找出其中最小的K个数. 例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 快排思路(掌握): class Solution { public ...
 
随机推荐
- Kibana:在Kibana 中定制 time picker 及 指标可视化显示格式
			
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/107066779
 - 查看docker容器占用的内存
			
# 获取容器ID docker ps => 3b7fa46d9d43 # 根据容器ID获取对应的进程 docker top 3b7fa46d9d43 => 179733 # 查看进程占用的 ...
 - 解决nexus仓库只能拉取不能推送的问题
			
当时正在使用jenkins自动构造镜像推送到nexus上的docker镜像仓库,突然间就报错如下,没法推送,超过重试次数后也是没法推送: ERROR: Build step failed with e ...
 - 修改NodePort的范围
			
在 Kubernetes 集群中,NodePort 默认范围是 30000-32767,某些情况下,因为您所在公司的网络策略限制,您可能需要修改 NodePort 的端口范围 修改kube-apise ...
 - 【前端必会】eslint搞起
			
介绍 eslint进行代码审查,统一代码风格,预防潜在BUG 官网 https://eslint.bootcss.com/docs/user-guide/getting-started 安装 init ...
 - 使用 Windows 包管理器 (winget) 安装 .Net
			
用户可以在 Windows 10 和 Windows 11 计算机上使用 winget 命令行工具来发现.安装.升级.删除和配置应用程序. 此工具是 Windows 程序包管理器服务的客户端接口. 以 ...
 - NSIS检测并统计字符串中某个字符个数
			
!include "LogicLib.nsh" OutFile "检查找字符串中c出现的次数.exe" Name "test" Sectio ...
 - 微信小程序第三方授权登录
			
登录流程时序图: 1.调用uni.getProvider()获取服务供应商,参数service确定是选择对应的什么操作,此处选择授权登录oauth 代码如下: 2.调用登录接口uni.login(), ...
 - Mysql编程中遇到的小错误
			
我在mysql中创建的数据库表语句为如下 create table grade (id int not null, name varchar(255), desc varchar(255), prim ...
 - [ZJOI2012] 灾难 题解
			
爵士好提 Solution 定义\(u\)控制\(v\)当且仅当\(u\)死后\(v\)也会死 把图建出来,从食物向消费者连边 我们不难想到只能先处理食物,再处理消费者,所以先上个拓扑排序 想一想暴力 ...