编程练习【最小k个数】

news/2024/10/18 18:20:42/

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:

输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]

题目来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/smallest-k-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法一:排序复制

将数组排序,再将数组按顺序复制k个到结果数组中。

代码:

public static int[] smallestK(int[] arr, int k) {Arrays.sort(arr);int[] ret=new int[k];for(int i=0;i<k;i++) {ret[i]=arr[i];}return ret;}

 方法二:队列

利用优先队列的特点,将数组前k个数字先放入队列中,然后遍历剩下的数字,和队列第一个元素比较,如果队列第一个元素大于后面的数字,则数字出队,小的数字入队,遍历完数组后即可得到最小k个数的一个队列,再将元素保存到数组中即可。

代码:

public static int[] smallestK(int[] arr, int k) {int[] ret=new int[k];if(k==0) {return ret;}PriorityQueue<Integer> queue=new PriorityQueue<Integer>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;//定义比较规则}});for(int i=0;i<k;++i) {queue.offer(arr[i]);}for(int i=k;i<arr.length;++i) {if(queue.peek()>arr[i]) {queue.poll();queue.offer(arr[i]);}}for(int i=k-1;i>=0;i--) {ret[i]=queue.poll();}return ret;}

 


http://www.ppmy.cn/news/248501.html

相关文章

php获取扫描枪数据,条码扫描枪的读取技巧

有时扫描枪用户可能会遇到这种情况&#xff0c;条码扫描枪需要扫半天才能扫上条码&#xff0c;或者是一会能扫上&#xff0c;一会又扫不上&#xff0c;其实大多原因是客户并没有掌握正确的扫描枪读取条码的技巧&#xff0c;比如说扫描角度不正确&#xff0c;距离条码的远近不适…

实现原理 扫描枪_条码扫描枪的工作原理是什么?

条码扫描枪的工作原理是什么&#xff1f; 有很多朋友对于条码扫描枪的工作原理感兴趣&#xff0c;扫描之家&#xff0c;今天给大家介绍一下它的工作原理与分类&#xff0c;以及优缺点的简介。 一、条码扫描枪的工作原理&#xff1a; 手持式扫描枪通过一个激光二极管发出一束光线…

扫描枪速度测试软件,条码扫描枪怎么测试

条码扫描枪怎么测试 来源&#xff1a;本站 │ 发表时间&#xff1a;2021-01-25 | 浏览数&#xff1a;275 条码扫描枪的发展呈现多样化&#xff0c;而如今有线条码扫描枪占据着大部分市场份额&#xff0c;使用条码扫描枪的用户越来越多&#xff0c;而有线条码扫描枪应该怎么去测…

Java生成条形码(亲测可通过扫码枪扫出)

背景 项目上对接美国的外卖平台Uber&#xff08;可以理解为国内的美团&#xff09;&#xff0c;需要在打印的小票上生成一个条形码&#xff0c;供Uber的骑手扫码取货。经过一顿百度发现&#xff0c;大佬们提供的条形码要么扫不出来&#xff0c;要么就很不美观&#xff08;长宽…

新大陆NVH200条码扫描枪使用及设置教程

新大陆NLS-NVH200二维条码扫描抢可实现大快在50ms的时间内&#xff0c;识读到3mil以上密度的纸质码和直接少部件DPM标识条码&#xff0c;具备面的很快识读能力&#xff0c;同时搭配无闪频的白光照明和清晰准确的十字激光系统&#xff0c;很快提高了操作的效率&#xff0c;产品结…

安卓,Android,Scanner Gun,Barcode Scanner,条码,扫描枪,二维码,键盘模式

安卓对接扫码枪&#xff0c;扫码枪模拟键盘输入 方案一 在页面添加个隐藏的input 框&#xff0c;在input框内获取值&#xff0c;来得到扫码枪的值。 获取焦点&#xff0c;软键盘弹出不易隐藏。方案二 标准扫描枪扫描数据会触发KEYCODE_ENTER键&#xff0c;感兴趣的同学可以在…

通过扫描枪快速扫码录入的功能实现

目标&#xff1a; 进销存系统中&#xff0c;库存盘点的功能可以通过扫码录入的方式盘点产品的库存数&#xff0c;即扫描一次&#xff0c;产品的盘点数1&#xff0c;替代人工计数&#xff0c;减少人工失误&#xff1b; 实现环境&#xff1a; 白码低代码开发平台&#xff1b; …

条码扫描枪的连接与使用方法

伴随着移动支付的应用&#xff0c;超市收银的条码扫描枪已经成为收银员的一个“利”器&#xff0c;而很多新用户在网上看到条码扫描枪有很多种接口&#xff0c;**而商超的收银系统又各异&#xff0c;不知从而入手&#xff1f;**条码扫描枪的接口应该怎么连接呢&#xff1f;今天…