zoukankan      html  css  js  c++  java
  • 包含 min 函数的栈


    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,时间复杂度应为 O(1)


    自定义符合题意的数据结构,当然要考虑使用的现有数据结构来构造。可以使用两个栈来实现题目的要求。

    栈一用来正常存放数据,栈二则负责记录最小值。每次有新数据入栈时,先和栈二的最顶层元素比较,如果小于最顶层元素,栈一栈二同时压入新值;否则栈一压入新值,栈二压入当前其顶层元素的值。

    每次出栈时,栈一栈二同时将数据出栈,栈一是正常存放数据的,自然不用多说;栈二的最顶层数据一定是最小的,每次出栈也同时弹出栈顶元素。

    import java.util.Stack;
    
    public class Solution {
    
        private Stack<Integer> stack1 = new Stack<>();
        private Stack<Integer> stack2 = new Stack<>();
        
        public void push(int node) {
            stack1.push(node);
            if(stack2.empty()) {
                stack2.push(node);
            }
            if(node <= stack2.peek()) {
                stack2.push(node);
            } else {
                stack2.push(stack2.peek());
            }
        }
        
        public void pop() {
            stack1.pop();
            stack2.pop();
        }
        
        public int top() {
            return stack1.peek();
        }
        
        public int min() {
            return stack2.peek();
        }
    }
    

  • 相关阅读:
    能量石
    Journey among Railway Stations —— 1J
    金明的预算方案
    css学习
    实验七
    计算圆的面积和窗体的跳转
    Android子菜单和选项菜单与上下文菜单的实现
    Android 对话框(Dialog)
    /etc/init.d 与 service 的 关系 。。。。。。。
    Linux && Aix 下 常用命令 dd
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13777055.html
Copyright © 2011-2022 走看看