publicMaxQueue(){ maxQueue = new ArrayDeque<>(); normalQueue = new ArrayDeque<>(); } publicintmax_value(){ return maxQueue.isEmpty() ? -1 : maxQueue.peekFirst(); } publicvoidpush_back(int value){ while (!maxQueue.isEmpty() && value > maxQueue.peekLast()) { maxQueue.pollLast(); } maxQueue.offerLast(value); normalQueue.offerLast(value); } publicintpop_front(){ if (normalQueue.isEmpty()) { return -1; } int temp = normalQueue.pollFirst(); if (temp == maxQueue.peekFirst()) maxQueue.pollFirst(); return temp; } }
/** * Your MaxQueue object will be instantiated and called as such: * MaxQueue obj = new MaxQueue(); * int param_1 = obj.max_value(); * obj.push_back(value); * int param_3 = obj.pop_front(); */