单调递减队列

class MyQueue{
    
    
    
    private Deque<Integer> qu = new LinkedList<>();

    /**
     * 新增元素,n > 队尾元素,则队尾元素出队,直到空
     * @param n
     */
    public void add(Integer n){
    
    
        while(!qu.isEmpty() && qu.getLast() < n){
    
    
            qu.removeLast();
        }
        qu.add(n);
    }


    /**
     * 从队头开始移除一个等于n的元素
     * @param n
     */
    public void remove(Integer n){
    
    
        while (!qu.isEmpty() && qu.peek().equals(n)) {
    
    
            qu.pop(); break;
        }
    }

    /**
     * 返回队头元素,该元素为最大元素
     * @return
     */
    public Integer peek(){
    
    
        return qu.peek();
    }
}

猜你喜欢

转载自blog.csdn.net/Linging_24/article/details/130589868
今日推荐