博客
关于我
包含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/

    你可能感兴趣的文章
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    NGINX配置TCP连接双向SSL
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
    查看>>
    nginx配置中的服务器名称
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置后台网关映射路径
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置多个不同端口服务共用80端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-动静分离实例:搭建静态资源服务器
    查看>>
    Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
    查看>>
    Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置自带的stub状态实现活动监控指标
    查看>>