可查询最值

来源:互联网 发布:火影忍者ol先攻的算法 编辑:程序博客网 时间:2024/05/22 07:01

实现一个特殊的栈,在实现站的基本功能基础上,在实现返回栈中最小元素的操作getmin
要求:1、pop,push,getmin的操作时间复杂度都是1,2、设计栈的类型可以使用现成的栈结构

import java.util.Stack;public class Main {    Stack<Integer> stackData = new Stack<>();    public void push(int node){        stackData.push(node);    }    public void pop(){        stackData.pop();    }    public int top(){        return stackData.peek();    }    //将栈中的数按照出入栈顺序全部倒出来,装进另一个栈中,其中用min记录过程中遇到的最小值    //然后再倒出来装回去    public int min(){        Stack<Integer> stackMin = new Stack<>();        int min=stackData.pop();        stackMin.push(min);        while(!stackData.isEmpty()){            int value=stackData.pop();            if (value<min) {                min=value;            }            stackMin.push(value);        }        while(!stackMin.isEmpty()){            stackData.push(stackMin.pop());        }        return min;    }    //或者一一对应每一步将较小的值压入stackMin中    public int Min(int value){        Stack<Integer> stackMin=new Stack<>();        stackData.push(value);        if (stackMin.isEmpty() || value<stackData.peek()) {            stackMin.push(value);        }else{            stackMin.push(stackMin.peek());        }        return stackMin.pop();    }}
原创粉丝点击