difficulty: Medium tags:

  • Priority Queue
  • Heap title: Top k Largest Numbers

Top k Largest Numbers

Problem

Metadata

Description

Given an integer array, find the top k largest numbers in it.

Example

Given [3,10,1000,-99,4,100] and k = 3. Return [1000, 100, 10].

题解

简单题,使用堆即可。

Java

  1. public class Solution {
  2. /**
  3. * @param nums: an integer array
  4. * @param k: An integer
  5. * @return: the top k largest numbers in array
  6. */
  7. public int[] topk(int[] nums, int k) {
  8. if (nums == null || nums.length <= 1) return nums;
  9. PriorityQueue<Integer> pq = new PriorityQueue<Integer>(nums.length, Collections.reverseOrder());
  10. for (int num : nums) {
  11. pq.offer(num);
  12. }
  13. int[] maxK = new int[k];
  14. for (int i = 0; i < k; i++) {
  15. maxK[i] = pq.poll();
  16. }
  17. return maxK;
  18. }
  19. }

源码分析

复杂度分析