[劍指offer]包含min函式的棧
阿新 • • 發佈:2018-12-22
思路:
使用兩個棧,一個主棧存放資料,另一個輔助棧存放最小值,每次push資料時先與輔助棧棧頂元素進行比較,如果小於或等於輔助棧棧頂元素則在push進主棧同時push進輔助棧。要注意在pop刪除主棧元素時要同時判斷輔助棧棧頂元素是否和主棧棧頂元素相等,相等則同時pop刪除,否則原有的最小值不會被刪除。
實現:
import java.util.Stack;
public class Solution {
private Stack<Integer> stack1 =new Stack<Integer>();
private Stack<Integer> stack2 =new Stack<Integer>();
public void push(int node) {
stack1.push(node);
if(stack2.empty()||node<=stack2.peek())stack2.push(node);
}
public void pop() {
if(stack1.peek()==stack2.peek())stack2.pop();
stack1.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
return stack2.peek();
}
}