20.栈得到最小元素

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

注意这并不是简单找最小值的问题,数据会出栈哦,出栈了,你原来的最小数还是最小数么?

必须有个容器接收,什么都可以。若是简单的使用变量是不对的。

只需要辅助栈一直取到的是最小元素就好了。

import java.util.Stack;

public class Solution {
    Stack<Integer> dataStack = new Stack<Integer>();
    // 辅助栈
    Stack<Integer> minStack = new Stack<Integer>();
    Integer temp = null;
    
    public void push(int node){
        dataStack.push(node);
        if (minStack.isEmpty())
        {
            minStack.push(node);
            temp = node;
        } else
        {
            temp = minStack.peek();
            if (node <= temp)
            {
                minStack.push(node);
                temp = node;
            } else
                minStack.push(temp);
        }
    }
 
    // 数据栈出栈的同时。辅助栈也出栈。栈顶一直是最小元素
    public void pop()
    {
        dataStack.pop();
        minStack.pop();
    }
 
    public int top()
    {
 
        return dataStack.peek();
    }
 
    public int min()
    {
        return minStack.peek();
    }

}

猜你喜欢

转载自www.cnblogs.com/wzQingtTian/p/10662631.html