今天做了100题的第二题。
题目:设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
之前看了答案,只给了提示,需要一个辅助栈,因为如果最小元被pop出去,那么栈的最小元素也要改变,所以最小元其实也是一个栈结构。以下是拿C++的实现(在网上搜到了不用辅助栈的结构,需要不断存放push进的元素和最小元的差值,pop的时候再用最小元和差值做一个处理):
#include <iostream>
#include <stack>using namespace std;