实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
/* 两个栈一个维护最小值,一个维护值 */ class MinStack { public: MinStack() { // do intialization if necessary } /* * @param number: An integer * @return: nothing */ void push(int number) { // write your code here if (min_num.empty() || number <= min_num.top()) min_num.push(number); ans.push(number); } /* * @return: An integer */ int pop() { // write your code here int pos = ans.top(); ans.pop(); if (min_num.top() == pos) min_num.pop(); return pos; } /* * @return: An integer */ int min() { // write your code here if (!min_num.empty()) return min_num.top(); } stack <int> ans; stack <int> min_num; };