1. 程式人生 > >1.1設計一個有getMin功能的棧

1.1設計一個有getMin功能的棧

題目

實現一個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。

解答

使用兩個棧,一個棧用來儲存當前棧中的元素,其功能和一個正常的棧沒有區別,這個棧記為stackData;另外一個棧用於儲存每一步的最小值,這個棧記為stackMin。

程式碼實現
import java.util.Stack;

public class GetMinStack {
    private Stack<Integer> stackData;
    private Stack<Integer> stackMin;

    public
GetMinStack() { this.stackData = new Stack<>(); this.stackMin = new Stack<>(); } public void push(int newNum) { if (this.stackMin.isEmpty()) { this.stackMin.push(newNum); } else if (newNum <= this.getMin()) { this.stackMin.
push(newNum); } this.stackData.push(newNum); } public int pop() { if (this.stackData.isEmpty()) { throw new RuntimeException("The stack is empty!"); } int value = this.stackData.pop(); if (value == this.getMin()) { this
.stackMin.pop(); } return value; } public int getMin () { if (this.stackData.isEmpty()) { throw new RuntimeException("The stack is empty!"); } return this.stackMin.peek(); } }