プログラマ
9015 ワード
Link
https://programmers.co.kr/learn/courses/30/lessons/42628
Code
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
PriorityQueue<Integer> minq = new PriorityQueue<>();
PriorityQueue<Integer> maxq = new PriorityQueue<>(Collections.reverseOrder());
for (String oper : operations) {
StringTokenizer st = new StringTokenizer(oper);
String op = st.nextToken();
int value = Integer.parseInt(st.nextToken());
if (op.equals("I")) {
minq.offer(value);
maxq.offer(value);
}
else if (!maxq.isEmpty()) {
if (value == 1) {
int max = maxq.poll();
minq.remove(max);
}
else {
int min = minq.poll();
maxq.remove(min);
}
}
}
if (maxq.isEmpty()) {
int[] answer = {0, 0};
return answer;
}
else {
int[] answer = {maxq.peek(), minq.peek()};
return answer;
}
}
}
Solution
二重優先度を達成するために、
minq
およびmaxq
が使用される.コマンドがD
の場合、キューが空であるかどうかを確認してから、各キューに適した値を減算し、remove
メソッドで残りのキューを削除します.answer
が出力された場合、キューが空の場合、[0, 0]
が出力され、そうでない場合、maxq
およびminq
のルート値が出力される.Reference
この問題について(プログラマ), 我々は、より多くの情報をここで見つけました https://velog.io/@kwonsc/programmers-이중우선순위큐テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol