1. 程式人生 > >【Java筆試題】定義棧的資料結構

【Java筆試題】定義棧的資料結構

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()); } }