劍指offer-20:包含min函式的棧
阿新 • • 發佈:2018-12-11
題目描述
定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。
思路
應用一個輔助棧,壓的時候,如果A棧的壓入比B棧(輔助棧)壓入大,B棧不壓,小於等於,AB棧同時壓入。出棧,如果AB棧頂元素不等,A出,B不出。
程式碼
public class Solution20 {
private Stack<Integer> stack1 = new Stack<>();
private Stack<Integer> stack2 = new Stack<> ();
void push(int value) {
stack1.push(value);
if (stack2.empty())
stack2.push(value);
else if (value <= stack2.peek()) {
stack2.push(value);
}
}
void pop() {
if (stack1.peek() == stack2.peek())
stack2.pop() ;
stack1.pop();
}
int top() {
return stack1.peek();
}
int min() {
return stack2.peek();
}
}