プリンタ(JAVA用)


問題を見ると優先順位キューを思いついたのですが、1時間半も解けなかったので、複数の検索を開始しました.QはLinkedListで解くべきです.poll()関数とpay()関数の適切な使用は、スタックとの違いはfifoであるため、pop()ロールとしてのpoll()は最初に入れられたものに戻ります.
import java.util.*;
class Solution {

    class Test {
        int num;
        int value;

        Test(int num, int value) {
            this.num = num;
            this.value = value;
        }
    }
    public int solution(int[] priorities, int location) {
        int answer = 0;
        LinkedList<Test> ll = new LinkedList<Test>();
        for (int i = 0;i<priorities.length;i++) {
            ll.offer(new Test(i,priorities[i]));
        }

        while(!ll.isEmpty()) {
            Test test = ll.poll();
            int leftLl = 0;
            for(Test t:ll) {
                if (test.value < t.value) {
                    ll.offer(test);
                    break;
                } else {
                    leftLl++;
                }
            }

            if (leftLl==ll.size() && test.num == location) {
                return priorities.length - leftLl;
            }
        }
        return answer;
    }
}
leftLLがpoll()後にすべての残存値を比較した場合、testパラメータと等しいか小さいかは、現在の残存パラメータの値と同じであれば、残存値の中で最大の値とみなされ、入力順序が戻った値と同じであれば、プッシュされた番号が返されます.この番号が元のリストの個数-残りの値の個数