剑指offer-21.包含min函数的栈

题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。

题解:
首先想到的是用一个额外空间,存放当前桟中最小的元素,如果调用 min() 函数,直接返回该元素,但是如果桟有pop() 的操作,那么我们就无法获得之前的最小元素了。
所以需要用另一个辅助桟保存,当前桟的最小元素,每次弹出的时候,一起弹出,这样栈顶就维持着当前桟的最小元素了。

import java.util.Stack;

public class Solution {
    Stack<Integer> data = new Stack();//保存每次压入的数据
    Stack<Integer> min = new Stack(); //保存每次压入数据时当前data桟的最小值

    public void push(int node) {        
        if (data.isEmpty() || node <= min.peek()) {
            min.push(node);
        } else {
            min.push(min.peek());
        }
        data.push(node);
    }

    public void pop() {
        data.pop();
        min.pop();
    }

    public int top() {
        return data.peek();
    }

    public int min() {
        return min.peek();
    }
}

猜你喜欢

转载自blog.csdn.net/zxm1306192988/article/details/80965416