/*
* 定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。
* 思路:構造一個輔助棧,保證每一次輔助棧壓入的都是當前棧的最小元素
*/
import java.util.Stack;
public class FindMinValueOfStack {
Stack<Integer> dataStack = new Stack<Integer>();
Stack<Integer> coopStack = new Stack<Integer>();
public void push(int node) {
dataStack.push(node);
if(coopStack.isEmpty() || node < top()) {
coopStack.push(node);
}
else {
coopStack.push(top());
}
}
public void pop() {
if(!dataStack.isEmpty() && !coopStack.isEmpty()) {
dataStack.pop();
coopStack.pop();
}
}
public int top() {
return coopStack.peek();
}
public int min() {
return top();
}
public static void main(String[] args) {
FindMinValueOfStack t = new FindMinValueOfStack();
t.push(3);
System.out.println(t.min());
t.push(4);
System.out.println(t.min());
t.push(2);
System.out.println(t.min());
t.push(3);
System.out.println(t.min());
t.pop();
System.out.println(t.min());
}
}
《劍指offer》-實現一個能夠得到棧最小元素的min函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.