21xrx.com
2025-03-25 02:00:59 Tuesday
文章检索 我的文章 写文章
Java实现找出最大的k个数
2023-06-10 14:55:26 深夜i     --     --
Java PriorityQueue 最大的k个数

我最近在学Java,发现Java有一个很有用的函数,可以找到给定数组中最大的k个数。这对于某些问题来说很有用,比如要找到商品销量最高的前k个商品。

Java中利用PriorityQueue实现最大的k个数。PriorityQueue是一个优先级队列,它可以保证每次出队的都是队列中最大/最小的元素。我们可以用这个特性找到数组中最大的k个数。

下面是一个代码示例:

import java.util.PriorityQueue;
public class TopK {
  public static void main(String[] args) {
    int[] nums = 3;
    int k = 3;
    PriorityQueue
  pq = new PriorityQueue<>();
 
    for (int num : nums) {
      pq.offer(num);
      if (pq.size() > k) {
        pq.poll();
      }
    }
    while (!pq.isEmpty()) {
      System.out.println(pq.poll());
    }
  }
}

代码中,我们先定义了一个int数组nums和一个整数k,nums用来存储给定的数组,k是我们要找的最大的k个数。然后定义了一个PriorityQueue pq,用来存储当前最大的k个数。

接着,我们遍历数组nums,每次将当前元素放入pq中,并检查pq的大小是否超过了k。如果超过了k,就弹出当前最小的元素,保证pq中存储的一直是最大的k个数。最后,我们将pq中的元素逐个弹出并打印出来即可。

  
  

评论区

    相似文章