包含min函數的棧(java)

定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。

首先我們來分析一下這個題,題目要求時間複雜度爲O(1),那麼我們可以用空間換取時間,重新開闢一個棧,讓該棧僅保存輸入元素的最小值。
注意!!!
題目並沒有給提供棧,需要在外部首先定義兩個棧。
數據棧 - - - dataStsck ;
最小值棧 - - - minStack ;

import java.util.Stack;

public class Test{  
    //數據棧
    Stack<Integer> dataStsck = new Stack();
    //最小值棧
    Stack<Integer> minStack = new Stack();
    
    public void push(int node) {
        dataStsck.push(node);
        if(minStack.isEmpty() ||minStack.peek() > node ){
            minStack.push(node);
        }  
    }

    public void pop() {
    	//將數據棧中最小值刪除時,同時要刪除最小棧中對應的元素。
        if(dataStsck.pop() == minStack.peek()){
            minStack.pop();
        }
    }

    public int top() {
    	//該方法僅要求返回棧頂值,故直接返回數據棧頂就好了
        return dataStsck.peek();
    }

    public int min() {
    	//直接輸出最小值棧的棧頂元素就好了。
        return minStack.peek();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章