TopK问题
2017-08-08 23:13
134 查看
1、1000万video用id(long)标识,每个video有一个分数,取出其中分数高的前1000个。
public class Video { long id; double score; } public class Solution { public Video[] getTopK(ArrayList<Video> data, int k){ Queue<Video> pq = new PriorityQuery<>(k, new Comparator<Video>() { public int compare(Video e1, Video e2) { return e1.score - e2.score; }}); for(Video v : data) { if(pq.size() < k) { pq.add(v) } else { if(v.score > pq.peek()) { pq.poll(); pq.add(v); } } } Video[] tmp = new Video[pq.size()]; int index = pq.size() - 1; while(!pq.isEmpty()) { tmp[index] = pq.peek(); index--; } return tmp; } }
相关文章推荐
- 两个有序数组相加和的topK问题
- 堆的实现及应用(优先级队列,堆排,TopK问题)
- 基于快排的partition实现TOPK问题
- TopK问题
- 海量数据中找出前k大数(topk问题)
- 海量数据中找出前k大数(topk问题)
- TopK问题
- 海量数据的TopK问题
- TopK问题
- topk问题java实现
- 最小优先队列 解决TopK问题
- 堆及topk问题
- topk 问题
- 算法系列-topk问题
- Java最小堆解决TopK问题
- 关于海量数据TopK问题的一个具体实现(java)
- 06多次查询某区间内topk问题
- 单调旋转数组的TopK问题
- 找到100亿个URL中的重复URL以及搜索词汇的topK问题
- Java最小堆解决TopK问题