工作记录-----TOP K 小顶堆源码---小白也能看懂
2023-12-14 21:45:46
怎么实现小顶堆?
使用优先队列(PriorityQueue)来实现小顶堆
import java.util.PriorityQueue;
public class MinHeapExample {
public static void main(String[] args) {
// 创建一个小顶堆
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
// 添加元素到小顶堆
minHeap.add(5);
minHeap.add(2);
minHeap.add(8);
minHeap.add(1);
minHeap.add(10);
// 获取小顶堆的堆顶元素(最小值)
int minElement = minHeap.peek();
System.out.println("最小元素:" + minElement);
// 弹出并移除堆顶元素
int removedElement = minHeap.poll();
System.out.println("移除的最小元素:" + removedElement);
// 输出小顶堆的元素(按照从小到大的顺序)
System.out.println("小顶堆中的元素:");
while (!minHeap.isEmpty()) {
System.out.print(minHeap.poll() + " ");
}
}
}
这段代码会创建一个小顶堆,然后添加一些元素。你可以使用 peek() 方法来获取堆顶元素,使用 poll() 方法弹出并移除堆顶元素。最后,遍历小顶堆并输出元素,会按照从小到大的顺序输出。
当你需要找到数组或数据流中的前 K 个最小或最大的元素时,可以使用小顶堆(PriorityQueue)来解决。下面是一个用 Java 实现 TOP K 问题(找到数组中前 K 个最大元素)的示例代码:
import java.util.PriorityQueue;
public class TopKElements {
public static void main(String[] args) {
文章来源:https://blog.csdn.net/qq_51711443/article/details/134994064
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!