博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(5)top k大的数目
阅读量:5109 次
发布时间:2019-06-13

本文共 1120 字,大约阅读时间需要 3 分钟。

一、问题

在一个很长的数组中,求出top k大小的数目

 

二、办法

  • 用优先队列
  • 时间复杂度O(nlog(k)),应该是最差的情况下是这个

三、Code

1 package algorithm; 2  3 import java.util.ArrayList; 4 import java.util.Comparator; 5 import java.util.List; 6 import java.util.PriorityQueue; 7  8 /** 9  * Created by adrian.wu on 2019/2/18.10  */11 public class TopKNums {12     public List
topKnums(int[] nums, int k) {13 PriorityQueue
pq = new PriorityQueue<>(new Comparator
() {14 @Override15 public int compare(Integer o1, Integer o2) {16 return o2.compareTo(o1);17 }18 });19 for (int i = 0; i < k; i++)20 pq.add(nums[i]);21 22 for (int i = k; i < nums.length; i++) {23 if (pq.peek() != null && pq.peek() > nums[i]) {24 pq.poll();25 pq.offer(nums[i]);26 }27 }28 29 List
list = new ArrayList<>();30 while (pq.peek() != null) list.add(pq.poll());31 return list;32 }33 }

 

转载于:https://www.cnblogs.com/ylxn/p/10394629.html

你可能感兴趣的文章
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>