每日一题:最小栈(LeetCode 155)

题目

设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
- MinStack() 初始化堆栈对象。
- void push(int val) 将元素val推入堆栈。
- void pop() 删除堆栈顶部的元素。
- int getMin() 获取堆栈中的最小元素。

解答

class MinStack {
public:
    //stk正常出入栈
    stack<int> stk;
    //minStk用于计算最小元素
    stack<int> minStk;
    MinStack() {

    }

    void push(int val) {
        stk.push(val);
        //val小于等于栈顶元素时才入栈
        if(!minStk.size() || val <= minStk.top())
        {
            minStk.push(val);
        }
    }

    void pop() {
        //stk出栈的元素与minStk栈顶元素相等时,minStk也出栈
        if(stk.top() == minStk.top())
        {
            minStk.pop();
        }
        stk.pop();
    }

    int top() {
        return stk.top();
    }

    int getMin() {
        return minStk.top();
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */
THE END
分享
二维码
打赏
海报
每日一题:最小栈(LeetCode 155)
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: - MinStack() 初始化堆栈对象。 - void push(int val) ……
<<上一篇
下一篇>>