当前位置: 首页 > wzjs >正文

天津河北做网站的公司国外网站icp备案

天津河北做网站的公司,国外网站icp备案,收录查询代码,银行网站建设公司文章目录 1. 问题描述2. 核心要求3. 实现思路双栈同步法 4. 完整代码实现5. 复杂度分析6. 总结与优化方向方法优势优化方向适用场景 1. 问题描述 设计一个支持 push、pop、top 操作,并能在 常数时间 内检索到最小元素的栈。要求所有操作的时间复杂度均为 O(1)。 示…

文章目录

    • 1. 问题描述
    • 2. 核心要求
    • 3. 实现思路
      • 双栈同步法
    • 4. 完整代码实现
    • 5. 复杂度分析
    • 6. 总结与优化方向
      • 方法优势
      • 优化方向
      • 适用场景

1. 问题描述

设计一个支持 pushpoptop 操作,并能在 常数时间 内检索到最小元素的栈。要求所有操作的时间复杂度均为 O(1)。

示例输入输出

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   // 返回 -3
minStack.pop();
minStack.top();      // 返回 0
minStack.getMin();   // 返回 -2

2. 核心要求

  • 功能要求:实现栈的基本操作,并高效获取最小值。
  • 时间复杂度:所有操作(push, pop, top, getMin)必须为 O(1)。
  • 空间复杂度:尽可能优化,但允许使用额外空间。

3. 实现思路

双栈同步法

通过维护两个栈实现功能:

  1. 主栈 (stack):存储所有元素。
  2. 辅助栈 (minStack):存储每个主栈状态下的最小值,与主栈同步操作。

关键操作

  • 入栈 (push):主栈压入元素,辅助栈压入当前最小值。
  • 出栈 (pop):主栈和辅助栈同步弹出栈顶元素。
  • 最小值查询 (getMin):直接访问辅助栈顶元素。

同步原理
每次入栈时,辅助栈记录当前主栈的最小值;出栈时,辅助栈同步弹出元素,确保其栈顶始终是主栈当前的最小值。


4. 完整代码实现

import java.util.Deque;
import java.util.LinkedList;class MinStack {private Deque<Integer> stack;      // 主栈:存储所有元素private Deque<Integer> minStack;   // 辅助栈:存储每个状态的最小值public MinStack() {stack = new LinkedList<>();minStack = new LinkedList<>();}public void push(int val) {stack.push(val);// 辅助栈压入当前最小值:若栈为空,当前值为最小;否则与栈顶比较if (minStack.isEmpty()) {minStack.push(val);} else {minStack.push(Math.min(minStack.peek(), val));}}public void pop() {stack.pop();minStack.pop();  // 同步弹出辅助栈顶元素}public int top() {return stack.peek();  // 返回主栈顶元素}public int getMin() {return minStack.peek();  // 返回辅助栈顶元素(当前最小值)}
}

5. 复杂度分析

  • 时间复杂度:所有操作均为 O(1),直接访问栈顶元素。
  • 空间复杂度:O(n),其中 n 为操作次数。辅助栈与主栈大小相同,最坏情况下存储所有元素的最小值。

6. 总结与优化方向

方法优势

  • 直观易懂:双栈同步操作逻辑清晰,代码简洁。
  • 严格满足时间复杂度要求:所有操作均在常数时间内完成。

优化方向

  1. 空间优化:辅助栈可以不存储所有状态的最小值,而是当新值 ≤ 当前最小值时才压入辅助栈。弹出时,仅当主栈顶等于辅助栈顶时才弹出辅助栈顶。
    示例
    public void push(int val) {stack.push(val);if (minStack.isEmpty() || val <= minStack.peek()) {minStack.push(val);}
    }public void pop() {if (stack.pop().equals(minStack.peek())) {minStack.pop();}
    }
    
    优点:减少辅助栈空间占用。
    缺点:代码复杂度稍高,需处理对象相等性问题(如使用 Integer 时需用 equals 比较)。

适用场景

  • 对时间复杂度要求严格,且可接受额外空间的场景。
  • 需要快速获取最小值的栈结构设计问题。
http://www.dtcms.com/wzjs/789947.html

相关文章:

  • a做爰网站怎么区分模板网站
  • 个人备案网站可以做论坛吗浙江网站建设 seo
  • 做外贸的 需要什么样的网站虚拟机中建设iis网站
  • 潍坊微信网站制作网站学什么专业
  • 免费在线网站建设网站快捷按钮以什么方式做
  • 无锡网站制作怎么样wordpress 置顶 函数
  • 佛山建网站公司哪家好网络营销策划书包括哪些内容
  • 网站建设公司怎样域名大全 二级域名
  • 制作网页的的网站利用国外免费空间做网站
  • 旅游网站的建设与应用建设的网站服务器
  • 网站建设服微信公众号接口开发
  • 可信网站验证素材下载网站源码
  • 网站建设都是需要什么软件网站app建设图片
  • 大理州建设局门户网站网站备案 个人 单位
  • 禁止同ip网站查询列举网站开发常用的工具
  • 如何做网站制作游戏网站服务器租用
  • 网站开发的费用计入什么科目免费源码资源网
  • 怎么确定电商网站建设的目标自己的网站怎么做跳转
  • 中国网站开发用盗版犯法郑州直播网站建设
  • 网站页面一般做多大推广软文300字范文
  • 网站左侧 导航网站字体字号
  • 山东网站开发制作网站换了域名还被k站不
  • 网站建设实训报告册中山建设网站的公司
  • 微网站 pc网站同步wordpress搭建两个主题
  • 如何做文档附网站做二手车有哪些网站有哪些手续费
  • 免费网站怎么做排名建设一个网站得多少钱
  • 长沙推广网站中英文双语企业网站
  • 网站改版公司哪家好制作书签的感受心得
  • 中国建设银行网站如何注册长沙seo优化推广公司
  • 西安单位网站制作明星个人网站建设方案