排序优先级队列整数有问题
have a problem sorting priority queue integers
你好,我想知道我的代码有什么问题:
它应该有这样的输出:
在这个问题中我需要通过添加元素、删除元素、优先队列的大小、打印队列和队列的顶部元素来实现不同的队列操作
输入格式
输入的第一行包含一个整数T,表示测试用例的数量。对于每个测试用例,输入的第一行包含一个整数 Q,表示查询的数量,然后是 Q space 分隔的查询。查询可以是以下类型:
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++;
}}
}
但是当我是 运行 我的代码时,它给我这样的输出:
您的队列打印代码有一些问题,请尝试使用以下代码:
public static void printQueue(PriorityQueue<Integer> p1)
{
PriorityQueue<Integer> p2 = new PriorityQueue<>(p1);
while (!p2.isEmpty())
{
System.out.print(p2.poll() + " ");
}
System.out.println();
}
你可以在这里找到解释:
你好,我想知道我的代码有什么问题: 它应该有这样的输出:
在这个问题中我需要通过添加元素、删除元素、优先队列的大小、打印队列和队列的顶部元素来实现不同的队列操作
输入格式
输入的第一行包含一个整数T,表示测试用例的数量。对于每个测试用例,输入的第一行包含一个整数 Q,表示查询的数量,然后是 Q space 分隔的查询。查询可以是以下类型:
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++;
}}
}
但是当我是 运行 我的代码时,它给我这样的输出:
您的队列打印代码有一些问题,请尝试使用以下代码:
public static void printQueue(PriorityQueue<Integer> p1)
{
PriorityQueue<Integer> p2 = new PriorityQueue<>(p1);
while (!p2.isEmpty())
{
System.out.print(p2.poll() + " ");
}
System.out.println();
}
你可以在这里找到解释: