题目描述:

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。     
 !!注意:题目意思是可以获取栈内最小数,而不是对栈内数据进行排序。 

方法:开辟一个辅助栈

class Solution {
public:
	stack<int> nomal_stack,min_stack; 
    void push(int value) {
    	nomal_stack.push(value);
    	if(min_stack.empty())
    	{
    		min_stack.push(value);
		}
		else
		{
			if(value<min_stack.top())
				min_stack.push(value);			
			else
				min_stack.push(min_stack.top());
		}
    }
    void pop() {
        nomal_stack.pop();
        min_stack.pop();
    }
    int top() {
        return nomal_stack.top();
        
    }
    int min() {
        return min_stack.top();
    }
};