剑指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 }

 

posted @ 2018-06-11 16:54  pathjh  阅读(133)  评论(0编辑  收藏  举报