最简单的是使用双栈。一种更好的方式是使用差值栈。差值栈唯一麻烦的是 pop() 操作。
class Solution { stack<int> diffStack; stack<int> minStack; public: void push(int value) { diffStack.push(value); if(minStack.empty()) minStack.push(value); else if(value < minStack.top()) minStack.push(value); else minStack.push(minStack.top()); } void pop() { diffStack.pop(); minStack.pop(); } int top() { return diffStack.top(); } int min() { return minStack.top(); } };