//ストレージキュー Queue <Integer> queue; //単調な双方向キュー Deque <Integer> deque; public MaxQueue(){ queue = new LinkedList <>(); deque = new LinkedList <>(); } public int max_value (){ //空のリターン-1キューの空でないリターンヘッド return deque.isEmpty()?-1:deque.peekFirst(); } public void push_back(int value){ queue.offer(value); / /キュー内の値が現在の値より大きくなるか、キューが空になるまでループで削除します while(!deque.isEmpty()&& deque.peekLast()<value){ //キューがそうでない場合emptyの場合、現在の値はキューの最後の値と比較されます 。Isより大きい場合は、キューの末尾の値を削除しますdeque.removeLast(); } //上記のループを実行した後、キューは空または値が現在の値よりも大きい場合、現在の値がキューに追加されます deque.offerLast(value); } public int pop_front(){ //空のreturn -1 if(queue.isEmpty()){ return -1; } //データキューの先頭と単調な双方向キューが等しい 場合if(queue.peek( ).equals(deque。peekFirst())){ // 2つのキューの要素の一貫性を保つために、単調な双方向キューもポップする必要があります deque.removeFirst(); } return queue.remove(); } public static void main(String [] args){ MaxQueue65 obj = new MaxQueue65(); obj.push_back(1); obj.push_back(2); System.out.println(obj.max_value()); System.out.println(obj .pop_front()); System.out.println(obj.max_value()); }
剣はOffer-65キューの最大値を指します
おすすめ
転載: blog.csdn.net/a792396951/article/details/114633539
おすすめ
ランキング