हैलो मुझे आश्चर्य है कि मेरे कोड में क्या गलत है: इसमें इस तरह का आउटपुट होना चाहिए:

enter image description here

इस समस्या में मुझे तत्व जोड़कर, तत्व को हटाकर, प्राथमिकता कतार का आकार, कतार और कतार के शीर्ष तत्व को प्रिंट करके विभिन्न कतार संचालन को लागू करने की आवश्यकता है

इनपुट प्रारूप

इनपुट की पहली पंक्ति में एक पूर्णांक 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++;
        }}
}

लेकिन जब मैं अपना कोड चला रहा हूं तो यह मुझे इस तरह आउटपुट देता है:

enter image description here

-3
Tacitus Kilgore 16 नवम्बर 2020, 19:04

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();
}

आप यहां स्पष्टीकरण पा सकते हैं:

PrimaryQueue.toString गलत तत्व क्रम

0
Kapitany 16 नवम्बर 2020, 20:14