查找栈内最小值的O(1)算法————用辅助栈实现
具体实现方式有二,但两者区别仅在于入栈出栈的方式,思路均为通过一个辅助栈来实现存储原栈的最小值,辅助栈的栈顶永远为当前栈的最小值。
(设辅助栈为stackMin
,原栈为stackData
)
方式一:stackData
每压入一个数,就比较该数与stackMin
栈顶的大小(如果stackMin
为空,就直接压入),如果小就压入stackPop
中,否则略过;每弹出一个数,就比较该数与stackMin
栈顶的大小是否相等,如果相等就同时弹出stackMin
的栈顶,否则略过
代码实现如下:
package com.lilydedbb;
import java.util.Stack;
/**
* Created by dbb on 2016/12/23.
*/
public class GetMinStack {