1.给定100个int数字,在其中找出最大的10个;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
final int topK = 3;
int[] vec = {4, 1, 5, 8, 7, 2, 3, 0, 6, 9};
PriorityQueue<Integer> pq = new PriorityQueue<>(topK);
for (int x : vec) {
pq.offer(x);
if (pq.size() > topK) {
// 如果超出个数,则弹出堆顶(最小的)数据
pq.poll();
}
}
while (!pq.isEmpty()) {
System.out.println(pq.poll()); // 输出依次为7,8,9
}
}
}
⒉给定10亿个int数字,在其中找出最大的10个(这10个数字可以无序);
3.给定10亿个int数字,在其中找出最大的10个(这10个数字依次排序);
4.给定10亿个不重复的int数字,在其中找出最大的10个;
5.给定10个数组,每个数组中有1亿个int数字,在其中找出最大的10个;
6.给定10亿个string类型的数字,在其中找出最大的10个(仅需要查1次);
7.给定10亿个string类型的数字,在其中找出最大的k个(需要反复多次查询,其中k是一个随机数字)。