題目:定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。
思路:使用兩個棧,一個棧用來存放正常的數據,一個棧用來記錄到該數據爲止,棧中數據的最小值
import java.util.Stack; public class StackMin { Stack stack = new Stack(); Stack stackmin = new Stack(); public void push(int node) { stack.push(node); if (this.stackmin.size() > 0){ stackmin.push(Math.min((int)stackmin.peek(),node)); } else { stackmin.push(node); } } public void pop() { if (this.stack.size() > 0){ int data = (int)this.stack.pop(); int stackmin_pop = (int)this.stackmin.pop(); } } public int top() { if (this.stack.size() > 0){ return (int)this.stack.peek(); } return 0; } public int min() { if (this.stack.size() > 0){ return (int)this.stackmin.peek(); } return 0; } public static void main(String[] args) { StackMin s = new StackMin(); s.push(19); s.push(21); s.push(5); s.push(-1); System.out.println(s.min()); System.out.println(s.top()); s.pop(); System.out.println(s.min()); } }