题目链接:http://www.lintcode.com/zh-cn/problem/min-stack/
快考试了,做点水题,练练手。
class MinStack {
public:
MinStack() {
// do intialization if necessary
stk_cur = min_cur = -1;
}
/*
* @param number: An integer
* @return: nothing
*/
void push(int number) {
// write your code here
stk[++stk_cur] = number;
if (min_cur == -1)min_num[++min_cur] = stk_cur;
else {
if (number < stk[min_num[min_cur]])
min_num[++min_cur] = stk_cur;
}
}
/*d
* @return: An integer
*/
int pop() {
// write your code here
if (min_num[min_cur] >= stk_cur && min_cur > -1)
--min_cur;
return stk[stk_cur--];
}
/*
* @return: An integer
*/
int min() {
// write your code here
return stk[min_num[min_cur]];
}
private:
int stk[100];
int min_num[100];
int stk_cur, min_cur;
};