带最小值操作的栈

来源:互联网 发布:生活的真相 知乎 编辑:程序博客网 时间:2024/05/27 20:52

带最小值操作的栈

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。

主要需要解决在O(1)的复杂度下完成min()操作;引入一个辅助栈,每次进栈操作的同时,将当前最小值加入辅助栈.min()函数取扶住栈栈顶元素.

import java.util.Stack;public class MinStack {    public Stack<Integer> min;    public Stack<Integer> data;    public MinStack() {        // do initialize if necessary        min = new Stack<Integer>();        data = new Stack<Integer>();    }    public void push(int number) {        // write your code here        if (data.empty()) {            data.push(number);            min.push(number);        } else {            int tmp = min.peek();            data.push(number);            if (number < tmp) {                min.push(number);            } else {                min.push(tmp);            }        }    }    public int pop() {        // write your code here        min.pop();        return data.pop();    }    public int min() {        // write your code here        return min.peek();    }}
0 0
原创粉丝点击