算法竞赛中的常用JAVA API:PriorityQueue(优先队列)

news/2024/5/18 21:30:29 标签: PriorityQueue, 队列, java, 优先队列

PriorityQueue

  • PriorityQueue
    • 初始化
    • 常用函数
    • 实现大根堆的两种方式
    • 实例

了解其他JAVA 常用API和算法点这里 >> https://blog.csdn.net/GD_ONE/article/details/104061907

PriorityQueue_3">PriorityQueue

翻译过来就是优先队列本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆顶为最小值。

初始化

PriorityQueue()//使用默认的初始容量(11)创建一个 PriorityQueue,并根据其自然顺序对元素进行排序。

java">PriorityQueue<Integer> Q = new PriorityQueue<>(); // 初始化

常用函数

add(E e)//将指定的元素插入此优先级队列
clear()//清空
contains(Object o) // 如果包含指定元素返回true
iterator()//返回在此队列中的元素上进行迭代的迭代器。
offer(E e) // 将指定元素插入此优先队列
peek() // 获取第一个元素,及最小或最大元素
poll() // 获取并移除第一个
remove(Object o) // 移除指定元素
size() // 返回元素个数

实现大根堆的两种方式

因为java中的优先队列默认是小根堆,要实现大根堆可以用以下两种方法:

  1. 使用自定义比较器
  2. 将所有数据变为之前自身的负数之后在插入, 因为添加个负号就相当于是逆序了嘛。1 < 2 < 3 取负之后变为 -1 > - 2 > - 3

实例

java">public static void main(String[] args){
		Scanner in = new Scanner(new InputStreamReader(System.in));
		PriorityQueue<Integer> Q = new PriorityQueue<>();
		int a;
		for(int i = 0; i < 10; i++){
			a = in.nextInt();
			Q.add(a);
			System.out.print(Q.peek()+" ");// 输出当前队列的最小元素
		}
	}

输入: 1 -1 -2 -3 10 -4 -5 -6 -7 -8
输出: 1 -1 -2 -3 -3 -4 -5 -6 -7 -8

http://www.niftyadmin.cn/n/1465610.html

相关文章

java中sort方法的自定义比较器写法

文章目录摘要对数组排序对集合进行排序对自定义对象数组排序常用JAVA API和基础算法合集&#xff1a; https://blog.csdn.net/GD_ONE/article/details/104061907 摘要 在做一些算法题时常常会需要对数组、自定义对象、集合进行排序. 在java中对数组排序提供了Arrays.sort()方法…

[leetCode]541. 反转字符串 II

博客园&#xff1a;https://www.cnblogs.com/PythonFCG/p/13890451.html 题目 链接&#xff1a;https://leetcode-cn.com/problems/reverse-string-ii 给定一个字符串 s 和一个整数 k&#xff0c;你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字…

[leetCode]151. 翻转字符串里的单词

博客园&#xff1a;https://www.cnblogs.com/PythonFCG/p/13891809.html 题目 给定一个字符串&#xff0c;逐个翻转字符串中的每个单词。 说明&#xff1a; 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格&#xff0c;但是反转后的字符不能包括。 …

和ts一般怎么玩_攻略|梦幻西游手游:金币小号怎么玩?高手一般都这么弄

恭喜发财&#xff0c;我是大白&#xff01;~梦幻西游手游里&#xff0c;很多玩家已经开始意识到小号的重要性&#xff01;无论是游戏中朋友的弃坑号还是自己练的号&#xff0c;每个人手上或多或少都有一点吧&#xff1f;但是小号你真的会用吗&#xff1f;今天大白就来分享一下&…

[leetCode]129. 求根到叶子节点数字之和

博客园: https://www.cnblogs.com/PythonFCG/p/13895105.html 题目 链接&#xff1a;https://leetcode-cn.com/problems/sum-root-to-leaf-numbers 给定一个二叉树&#xff0c;它的每个结点都存放一个 0-9 的数字&#xff0c;每条从根到叶子节点的路径都代表一个数字。 例如&a…

最短路问题的五种算法

单元最短路和多源汇最短路的适用算法摘要单源最短路&#xff1a; 一个点到其他点的最短路。多源汇最短路&#xff1a; 任意两点间的最短路。图的存储方式朴素Dijkstra堆优化DijkstraBellman-Ford求总路径条数不多于K条的最短路径SPFA堆优化Dijkstra和SPFA的区别和优缺点用SPFA判…

恩智浦 mcu 初始化程序_用MCU设计HMI图形显示方案:恩智浦专家讲解,一学就会!...

在今天的人机交互设计中&#xff0c;图形化显示凭借其既直观又美观的特性&#xff0c;已经成为了越来越多应用领域的标配。以往图形显示方案的开发&#xff0c;并不是一件轻松的事。在这里&#xff0c;恩智浦的专家将向你展示如何基于恩智浦MCU和第三方的图形库软件资源&#x…

[leetCode]463. 岛屿的周长

题目 链接&#xff1a;https://leetcode-cn.com/problems/island-perimeter 给定一个包含 0 和 1 的二维网格地图&#xff0c;其中 1 表示陆地 0 表示水域。 网格中的格子水平和垂直方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完全包围&#xff0c;但其中…