博客
关于我
包含min函数的栈
阅读量:651 次
发布时间:2019-03-15

本文共 1240 字,大约阅读时间需要 4 分钟。

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

核心思路

为了实现一个能够返回栈中最小元素的O(1)时间复杂度的min函数,可以采用双栈的方法。主要思路如下:

  • 双栈结构:设定两个栈,主栈(stackA)用于存储元素,辅助栈(stackMin)用于存储当前栈中最小的元素。
  • push操作:当向主栈push元素时,将元素与辅助栈顶部元素比较,较小者入辅助栈。
  • pop操作:同步弹出主栈和辅助栈的元素,保持两栈的栈顶元素一致。
  • 时间复杂度:每个操作均为O(1),满足题目要求。
  • 代码实现

    import java.util.Stack;public class Solution {    private Stack stackA = new Stack<>();    private Stack stackMin = new Stack<>();    public void push(Object obj) {        if (stackMin.isEmpty()) {            stackMin.push(obj);        } else {            Object currentMin = stackMin.peek();            if (((Comparable) obj).compareTo(currentMin) < 0) {                stackMin.push(obj);            } else {                stackMin.push(currentMin);            }        }        stackA.push(obj);    }    public void pop() {        if (!stackA.isEmpty() && !stackMin.isEmpty()) {            stackA.pop();            stackMin.pop();        }    }    public Object top() {        return stackA.peek();    }    public Object min() {        return stackMin.peek();    }}

    功能解释

    • push(Object obj):将元素obj加入主栈stackA,并根据 compareTo方法比较stackMin顶部元素,较小者保留在stackMin顶部。
    • pop():同时从主栈和辅助栈弹出一个元素,确保两栈同步。
    • top():返回主栈顶部元素。
    • min():返回辅助栈顶部,即当前栈中最小的元素。

    这种方法有效地保证了min函数的时间复杂度为O(1),同时维护了最小值,确保正确性。

    转载地址:http://hepmz.baihongyu.com/

    你可能感兴趣的文章
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    net发布的dll方法和类显示注释信息(字段说明信息)[图解]
    查看>>
    Net操作配置文件(Web.config|App.config)通用类
    查看>>
    NeurIPS(神经信息处理系统大会)-ChatGPT4o作答
    查看>>
    neuroph轻量级神经网络框架
    查看>>
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
    查看>>
    NEW DATE()之参数传递
    查看>>
    New Relic——手机应用app开发达人的福利立即就到啦!
    查看>>
    new 一个button 然后dispose,最后这个button是null吗???
    查看>>
    next项目部署到服务器pm2进程守护
    查看>>
    nexus上传jar
    查看>>
    Nexus指南中的更新强调集成和透明度的重要性
    查看>>
    Nexus指南已经发布
    查看>>
    Nexus(1):Nexus的安装与配置
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS
    查看>>
    NFS Server及Client配置与挂载详解
    查看>>
    NFS 服务配置篇
    查看>>
    NFS共享文件系统搭建
    查看>>