你好,我想知道我的代码有什么问题:它应该有这样的输出:
在这个问题中,我需要通过添加元素、删除元素、优先级队列的大小、打印队列和队列的顶部元素来实现不同的队列操作
输入格式
输入的第一行包含一个整数t,表示测试用例的数量。对于每个测试用例,输入的第一行包含一个整数q,表示查询的数量,后跟q空间分隔的查询。查询可以是以下类型:
1.x(将x添加到优先级队列并打印队列)
2.(从优先级队列的顶部移除元素并打印该元素)
3.(获取优先级队列顶部的元素)
4.(获取优先级队列的大小)
5.(打印优先级队列)
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;
class Solution {
public static void main(String args[]) {
Scanner scanner= new Scanner(System.in);
int T=scanner.nextInt();
int i=0;
int Q=scanner.nextInt();
System.out.println();
PriorityQueue<Integer>pq=new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
while (i<T){
for (int j = 0; j < Q; j++) {
int query=scanner.nextInt();
switch (query){
case 1:
pq.add(scanner.nextInt());
System.out.println(pq.toString().replace("[","").replace("]","").replace(",",""));
break;
case 2:
System.out.println(pq.poll());
break;
case 3:
System.out.println(pq.peek());
break;
case 4:
System.out.println(pq.size());
break;
case 5:
System.out.println(pq.toString().replace("[","").replace("]","").replace(",",""));
default:
break;
}}
i++;
}}
}
但当我运行代码时,它会给我这样的输出:
1条答案
按热度按时间ego6inou1#
您的队列打印代码有一些问题,请尝试以下代码:
你可以在这里找到解释:
priorityqueue.tostring元素顺序错误