【Java筆試題】定義棧的資料結構
阿新 • • 發佈:2019-02-05
1、題目
定義棧的資料結構,請在該型別中實現一個能夠得到棧最小元素的min函式,在該棧中,呼叫min、push和pop的時間複雜度都是O(1)。
2、Java程式碼
public class MinStack {
private Stack<Integer> minStack = new Stack<Integer>();
private Stack<Integer> stack = new Stack<Integer>();
public int pop(){ //彈棧
minStack.pop();
return stack.pop();
}
public void push(int num){ //壓棧
if (minStack.size() <= 0) {
minStack.push(num);
return;
}
Integer min = minStack.lastElement();
if (num < min) {
minStack.push(num);
} else {
minStack.push(min);
}
stack.push(num);
}
public int min(){
if (minStack.size() <= 0) {
return -1;
}
return minStack.lastElement();
}
}
public class CeshiMinStack {
public static void main(String[] args) {
MinStack ms = new MinStack();
ms.push(20);
System.out.println(ms.min());
ms.push(15 );
ms.push(11);
ms.push(2);
ms.push(0);
System.out.println(ms.min());
ms.pop();
System.out.println(ms.min());
ms.pop();
System.out.println(ms.min());
}
}