在排序优先级队列整数时遇到问题[关闭]
Posted
技术标签:
【中文标题】在排序优先级队列整数时遇到问题[关闭]【英文标题】:have a problem sorting priority queue integers [closed] 【发布时间】:2020-11-16 16:04:15 【问题描述】:你好,我想知道我的代码有什么问题: 它应该有这样的输出:
在这个问题中我需要通过添加元素、删除元素、优先队列的大小、打印队列和队列的顶部元素来实现不同的队列操作
输入格式
输入的第一行包含一个整数 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++;
但是当我运行我的代码时,它会给我这样的输出:
【问题讨论】:
请don't post your code/error messages/expected output as images。首先,我们要复制/粘贴它,其次搜索引擎无法索引该信息。因此,请确保任何文本信息实际上是以文本形式提供的。 【参考方案1】:您的队列打印代码有问题,请尝试以下代码:
public static void printQueue(PriorityQueue<Integer> p1)
PriorityQueue<Integer> p2 = new PriorityQueue<>(p1);
while (!p2.isEmpty())
System.out.print(p2.poll() + " ");
System.out.println();
你可以在这里找到解释:
PriorityQueue.toString wrong element order
【讨论】:
以上是关于在排序优先级队列整数时遇到问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章