定义包含min,pop,push函数的栈数据结构
要求,每个函数的时间复杂度为O(1)
分析:
栈的出栈和入栈都复杂度都为O(1),可以直接使用入栈,出栈函数,但是min函数需要遍历整个栈,其时间复杂度为O(N),如果想要其时间复杂度为O(1),就需要确保,在调用函数前,就已经知道最小值位于函数的哪个位置,可以用一个辅助栈来储存最小值。用辅助栈而不采用单个变量存储的原因在于栈的入栈出栈后会改变当前栈内的元素。出栈操作有可能将当前栈中的最小值出栈,因此需要一个有记忆功能的数据结构来储存最小值,栈是比较适合的。
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
stack