剑指offer--包含min函数的栈

2020-04-20 16:17:27 浏览数 (1)

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。


Java AC代码:

代码语言:javascript复制
import java.util.Stack;

public class Solution {

    Stack stack = new Stack();

    public void push(int node) {
        stack.push(node);
    }

    public void pop() {
        stack.pop();
    }

    public int top() {
        return (int)stack.pop();
    }

    public int min() {
        Stack tmp = new Stack();
        int min = (int)stack.pop();
        tmp.push(min);
        while(!stack.isEmpty()){
            int top = (int)stack.pop();
            if ( top < min){
                min = top;
            }
            tmp.push(top);
        }
        while(!tmp.isEmpty()){
            stack.push(tmp.pop());
        }
        return min;
    }
}

C AC代码

代码语言:javascript复制
include <stack>

class Solution {
    private:
        stack<int> stk;
        stack<int> smin;
    public:
        void push(int value) {
            stk.push(value);
            if(smin.empty()){
                smin.push(value);
            }
            if(smin.top() > value){
                smin.push(value);
            }
        }

        void pop() {
            if(stk.top() == smin.top()){
                smin.pop();
            }
            stk.pop();
        }

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

        int min() {
            return smin.top();
        }
};

0 人点赞