问题描述
需要获取当前栈中的最小元素,不可以破坏当前栈中的元素。
问题分析
- 获取当前栈中的最小元素,最小元素出栈了,那么栈中的最小元素需要随之而变。
- 当然可以通过对栈进行遍历,放到另一个栈中,不过这样耗时较长,并且每当需要一个最小值的时候都需要进行遍历。
解决方法
-
通过辅助栈,当有新的元素进来的时候和最小值进行比对,如果小于最小值则辅助栈中push新元素的值,新值大于栈顶元素则push栈顶元素。
stack_min[++top]=(new<min)?new:min. -
原始最小值只需要通过获取栈顶元素即可获取。
-
如果原始数据栈中的元素进行pop只需要对应辅助栈中的元素同时pop即可,这样对应的最小值就会随着原始数据栈中最小值的退出而改变。