• 面试题:包含min函数的栈


    题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。(时间复杂度,定义一个数据类型,可以对栈的实现做出更改)

    方法1:使用Iterator

    import java.util.Stack;
    import java.util.Iterator;
    public class Solution {
        Stack<Integer> stack=new Stack<>();
        public void push(int node) {
            stack.push(node);
        }
        public void pop() {
            stack.pop();
        }
        public int top() {
            return stack.peek();
        }
        public int min() {
            int min=stack.peek();
            Iterator<Integer> ite=stack.iterator();
            while(ite.hasNext()){
                int temp=ite.next();
                if(min>temp){
                    min=temp;
                }
            }
            return min;
        }
    }

    方法2:使用辅助栈

    import java.util.Stack;
    import java.util.Iterator;
    public class Solution {
        Stack<Integer> stack1=new Stack<>();
        Stack<Integer> stack2=new Stack<>();
        public void push(int node) {
            stack1.push(node);
            if(stack2.size()==0){
                stack2.push(node);
            }else{
                int temp=stack2.peek();
                if(temp>node)
                    stack2.push(node);
                else
                    stack2.push(temp);
            }
        }
        public void pop() {
            stack1.pop();
            stack2.pop();
        }
        //以下两个都是用peek();不是出栈
        public int top() {
            return stack1.peek();
        }
        public int min() {
            return stack2.peek();
        }
    }
  • 相关阅读:
    树状数组BIT
    KMP算法习题(一本通)
    西大附中集训日志
    图论大杂汇
    [IOI2008/BZOJ1791 岛屿](处理基环树的小技巧&基于bfs树形DP)
    字符串知识清单
    BZOJ刷题列表【转载于hzwer】
    NOIP2018复赛游记
    求极大子矩阵的两种方法
    NOIP2002-字串变换【双向BFS】
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9530518.html
Copyright © 2020-2023  润新知