C/C++教程

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

本文主要是介绍剑指 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();
	}
};

image.png
image.png
image.png

这篇关于剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!