由于栈具有先进后出的特点,push和pop也只能对栈顶元素进行操作。而题目要求的是在O(1)的时间复杂度求得最小元素,显然是不可以遍历求取的。这里可以用两个栈来实现,一个栈用来存取数据,另一个用来存栈的最小元素。思路如下:如果当前入栈的元素比最小栈中的栈顶元素还小,则如最小栈。在出栈时,如果当前出栈元素正好是最小栈的栈顶元素,则最小栈的栈顶元素也出栈。
import java.util.Stack; /** * Created by Liu on 2016/7/6. */ public class MinStack { private Stack<Integer>