剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%

用一个记录当前最小值的栈mins作为辅助,如果新入栈的数小于等于(因为可能有重复数值,所以取等号)mins.top或者mins是空的,则两个栈一起入栈。
随后出栈时如果出的是当前最小值,则两个栈一起出栈。

class MinStack {
public:
    stack<int> s, mins;
public:
	/** initialize your data structure here. */
	MinStack() {

	}

	void push(int x) {
		s.push(x);
		if (mins.empty() || mins.top()>=x)
			mins.push(x);
	}

	void pop() {
		if (mins.top() == s.top())
			mins.pop();
		s.pop();
	}

	int top() {
		return s.top();
	}

	int min() {
		return mins.top();
	}
};

剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%
剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%
剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%

上一篇:如果优雅地关闭ExecutorService提供的java线程池


下一篇:关机重启、用户注销