leetcode(39).155. Min Stack

来源:互联网 发布:广州网站搜索优化 编辑:程序博客网 时间:2024/06/06 12:51
题意:

设计一个支持推入栈顶、弹出栈顶元素、返回栈顶值和检索最小元素的栈。

对于构造函数,我们需要确定实现栈的数据结构,考虑选取动态数组ArrayList。利用add()  remove()  get()方法就可以实现。

这是首要考虑的问题,那么第二个要考虑的问题就是数据类型。那么我们自己设计一个数据类型。

其它都好实现,但是对于获取最小元素,需要在stack类中定义一个属性,专门来存储。每次放入取出数据的时候更新。

public class MinStack {    private List<data> list;    private int min = Integer.MAX_VALUE;        class data{        int val;        int min;        data(int val, int min){            this.val = val;            this.min = min;        }    }    /** initialize your data structure here. */    public MinStack() {        list = new ArrayList<>();    }        public void push(int x) {        if(x<min)            min = x;        list.add(new data(x, min));    }        public void pop() {        list.remove(list.size()-1);        if(list.isEmpty())             min = Integer.MAX_VALUE;        else             min = list.get(list.size()-1).min;    }        public int top() {        return list.get(list.size()-1).val;    }        public int getMin() {        return list.get(list.size()-1).min;    }}/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */



0 0