zoukankan      html  css  js  c++  java
  • 剑指Offer:面试题21——包含min函数的栈(java实现)

    问题描述:

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).

    思路:加入一个辅助栈用来存储最小值集合

    (这里要注意题目并没有说栈内的元素类型,因此要尽量通用)

    import java.util.Stack;
    
    public class Solution {
    
    
        Stack s1=new Stack();
        Stack min=new Stack();
        public void push(int node) {
            if(min.empty()){
                min.push(node);
            }else{
                int top=(int)min.peek();
                if(node<top){
                   min.push(node);
                }else{
                    min.push(top);
                }
            }
            s1.push(node);
        }
    
        public void pop() {
            if(!(s1.empty())){
                s1.pop();
                min.pop();
            }
        }
    
        public int top() {
            return (int)s1.peek();
        }
    
        public int min() {
           if(min.empty()){
               return 0;
           }
           return (int)min.peek();    
        }
    
    
    
    
    
    }
  • 相关阅读:
    [模板]杜教筛
    [NOIP2014]解方程
    [NOIP2016] 组合数问题
    [HAOI2011] Problem b
    Rmq Problem mex
    [模板]Link-Cut-Tree
    [SDOI2013]森林
    单调队列优化多重背包
    [USACO17JAN]Promotion Counting
    [模板] 点分治
  • 原文地址:https://www.cnblogs.com/wenbaoli/p/5655713.html
Copyright © 2011-2022 走看看