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

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


Java AC代码:

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代码

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();
        }
};
阅读更多
版权声明:本文为博主原创文章,若需转载,请注明http://blog.csdn.net/qq_30091945 https://blog.csdn.net/qq_30091945/article/details/70747942
个人分类: 剑指offer
所属专栏: 剑指offer题解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭