剑指offer-包含min函数的栈
题目:包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:这个题也就是要给原有的栈结构增加一个得到当前最小值的函数
我们使用一个额外的栈来进行辅助,设原有的栈为dataStack,辅助栈为minStack
在入栈时,先将其放入dataStack中,如果minStack此时为空的话,将其也放入minStack,如果不为空,则比较minStack栈顶元素与当前放入元素的大小,只有比当前minStack栈顶小的元素才能放进去,这样minStack栈顶元素就一直是当前元素的最小值
在出栈时,对两个栈一起进行pop;
要得到最小元素时,直接从minStack栈中返回栈顶元素即可
代码;
1 import java.util.Stack; 2 3 public class Solution { 4 Stack<Integer>dateStack=new Stack<Integer>(); 5 Stack<Integer>minStack=new Stack<Integer>(); 6 public void push(int node) { 7 dateStack.push(node); 8 if(minStack.isEmpty()||node<minStack.peek()){ 9 minStack.push(node); 10 }else{ 11 minStack.push(minStack.peek()); 12 } 13 } 14 15 public void pop() { 16 dateStack.pop(); 17 minStack.pop(); 18 } 19 20 public int top() { 21 return dateStack.peek(); 22 } 23 24 public int min() { 25 return minStack.peek(); 26 } 27 }