题意:模拟一个最小栈,可以push,pop,top,和返回栈中最小值。
思路:已经忘了栈是怎么构建的了,晕···尝试了半天,错误,发现直接用stack数据结构来做最方便,再用一个栈来存最小值。值得注意的是当pop时最小值栈也要pop。
代码:
stack<int> Data, Min; void push(int x) { Data.push(x); if(Min.empty() || Min.top() > x) Min.push(x); else Min.push(Min.top()); } void pop() { Data.pop(); Min.pop(); } int top() { if(!Data.empty()) return Data.top(); } int getMin() { if(!Min.empty()) return Min.top(); }