/**
* 包含min函數的棧
*/
class MinStack {
Stack<Integer> data_stack = null;
Stack<Integer> min_stack = null;
public MinStack() {
data_stack = new Stack<>();
min_stack = new Stack<>();
}
/**
* 添加一個元素
* min棧永遠保存最小的元素,當添加的元素比min棧棧頂的元素小時,則入棧,否則在添加一次min棧中棧頂的值
*
* @param val
*/
public void push(int val) {
int min = val;
if (!min_stack.isEmpty() && min < val) {
min = min_stack.peek();
}
data_stack.push(val);
min_stack.push(min);
}
/**
* 直接從min棧中獲取就行
*
* @return
*/
public int getMin() {
if (!min_stack.isEmpty()) {
return min_stack.peek();
}
return -1;
}
/**
* 彈出一個元素
*
* @return
*/
public int pop() {
if (!data_stack.isEmpty()) {
min_stack.pop();
return data_stack.pop();
}
return -1;
}
}
劍指Offer學習-面試題30:包含min函數的棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.