排序优先级队列整数时出现问题

tquggr8v  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(604)

你好,我想知道我的代码有什么问题:它应该有这样的输出:

在这个问题中,我需要通过添加元素、删除元素、优先级队列的大小、打印队列和队列的顶部元素来实现不同的队列操作
输入格式
输入的第一行包含一个整数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++;
        }}
}

但当我运行代码时,它会给我这样的输出:

ego6inou

ego6inou1#

您的队列打印代码有一些问题,请尝试以下代码:

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元素顺序错误

相关问题