21xrx.com
2024-09-08 11:39:48 Sunday
登录
文章检索 我的文章 写文章
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中的元素逐个弹出并打印出来即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复