【题目】 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈 中最小元素的操作。 【要求】 1.pop、 push 、 getMin 操作的时间复杂度都是 O (1) 。 2.设计的栈类型可以使用现成的栈结构。 【解答】 在设计上我们使用两个栈,一个栈用来保存当前栈中的元素,其功 能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用于保存 每一步的最小值,这个栈记为 stackMin 。具体的实现方式有两种。 第一种设计方案如下。 ● 压入数据规则 假设当前数据为 newNum ,先将其压入 stackData。然后判断 stackMin 是否为空: ● 如果为空,则 newNum 也压入 stackMin 。 ● 如果不为空,则比较 newNum 和 stackMin的栈顶元素中哪一个更 小: ● 如果 newNum 更小或两者相等,则 newNum 也压入 stackMin ; ● 如果 stackMin 中栈顶元素小,则 stackMin 不压入任何内容。 举例:依次压入 3
标签:元素,压入,面试,栈记,之栈,程序员,newNum,stackData,stackMin From: https://blog.csdn.net/lqfstart1/article/details/143318731