包含min函数的栈
Posted 雪浪snowWave
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含min函数的栈相关的知识,希望对你有一定的参考价值。
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:维护两个栈,一次添加每次的所有的数,另一个添加每次最小值(当前值比栈顶小则添加,都否添加当前栈顶),pop时两个栈都要出
Stack<Integer> mData=new Stack<Integer>(); Stack<Integer> mMin=new Stack<Integer>(); //java中的peek()和c++中的top()只返回头,不移除,pop要移除 public void push(int node) { if(mData.empty()){ mMin.push(node); } if(node<mMin.peek()){ mMin.push(node); }else{ mMin.push(mMin.peek()); } mData.push(node); } public void pop() { if(mData.size()>0&&mMin.size()>0){ mData.pop(); mMin.pop(); } } public int top() { return (int)mData.peek(); } public int min() { if(mMin.empty()){ return 0; } return (int)mMin.peek(); }
以上是关于包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章