题目描述
原题连接:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/
Design a stack that supports push, pop, top, and retrieving the
minimum element in constant time.push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrievethe minimum element in the stack.
实现思路
题目要求我们实现一个能够包含getMin函数的栈。首先我们能想到的是设置一个成员变量来保存这个最小值,当每次压入新元素的时候,适时更新这个最小值。但是有个问题就是 如果最小元素被弹出,我们希望得到次小的元素怎么办,发现仅仅有一个变量无法做到。
解决思路是,引入一个新的栈结构,专门用来保存最小值,保持栈顶上永远保存的是当前栈的最小值,具体程序设计实现如下。
程序实现
Java 实现的算法如下
public class MinStack {
private Stack<