剑指offer:包含min函数的栈

 

两个栈,始终保证两个栈的数值数量一样

push的时候

一个正常存储值,

另一个比较data与peek()的值,哪个小存储哪个

 

Stack<Integer> stack_data=new Stack<>();  
        Stack<Integer> stack_min=new Stack<>();  
        public void push(int node) {  
           stack_data.push(node);   
           if (stack_min.isEmpty()) { //min为空,没有peek(),直接放入 
               stack_min.push(node);  
           }else if(node<min()){     //比peek()小,min放入data
               stack_min.push(node);  
           }else {  
               stack_min.push(min());  
           }  
        }  
          
        public void pop() {  
            stack_data.pop();  
            stack_min.pop();  
        }  
          
        public int top() {  
            return stack_data.peek();  
        }  
          
        public int min() {  
            return stack_min.peek();  
        }  

 

posted on 2017-08-28 22:25  zhangxiaoyu  阅读(99)  评论(0编辑  收藏  举报

导航