LintCode:带最小值操作的栈

来源:互联网 发布:万网如何设置三级域名 编辑:程序博客网 时间:2024/06/05 10:59

LintCode:带最小值操作的栈

Python

class MinStack(object):    def __init__(self):        # do some intialize if necessary        self.stack = []    def push(self, number):        # write yout code here        if len(self.stack) == 0:            self.stack.append([number, number])        else:            self.stack.append([number, min(number, self.stack[-1][1])])    def pop(self):        # pop and return the top item in stack        return self.stack.pop()[0]    def min(self):        # return the minimum number in stack        return self.stack[-1][1]

Java

public class MinStack {    private Stack<ArrayList<Integer>> stack;    public MinStack() {        // do initialize if necessary        stack = new Stack<ArrayList<Integer>>();    }    public void push(int number) {        // write your code here        if(stack.empty()){            ArrayList<Integer> L = new ArrayList(Arrays.asList(number, number));            stack.push(L);        }        else{            ArrayList<Integer> tmp = stack.peek();            if(tmp.get(1) < number){                ArrayList<Integer> L = new ArrayList(Arrays.asList(number, tmp.get(1)));                stack.push(L);            }            else{                ArrayList<Integer> L = new ArrayList(Arrays.asList(number, number));                stack.push(L);            }        }    }    public int pop() {        // write your code here        ArrayList<Integer> L = stack.pop();        int ans = L.get(0);        return ans;    }    public int min() {        // write your code here        ArrayList<Integer> L = stack.peek();        int ans = L.get(1);        return ans;    }}
0 0