包含min函数的栈

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

思路:可以用一个变量来保存当前最小的数,但是这样在最小的数出栈之后剩余数的最小数怎么获取?这就需要使用一个同样大小的辅助栈,辅助栈保存当前最小的数,这样就能实现题目所要求的min函数。

实现代码:

import java.util.Stack;

public class Solution {
    
    public Stack<Integer> mainStack;
    
    public Stack<Integer> minStack;
    
    public Solution() {
        mainStack = new Stack<Integer>();
        minStack = new Stack<Integer>();
    }

    
    public void push(int node) {
        mainStack.push(node);
        
        if(minStack.isEmpty()) {
            minStack.push(node); 
        }
        else {
            int cur = minStack.peek();
            if(node < cur)
                minStack.push(node);
            else
                minStack.push(cur);
        }
    }
    
    public void pop() {
        if(!mainStack.isEmpty()) {
            mainStack.pop();
            minStack.pop();
        }
            
    }
    
    public int top() {
        if(!mainStack.isEmpty())
            return mainStack.peek();
        else
            return 0;
    }
    
    public int min() {
        if(!minStack.isEmpty())
            return minStack.peek();
        else
            return 0;
    }
}
原文地址:https://www.cnblogs.com/wxisme/p/5320062.html