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

网站建设2019河北省衡水市景县规划网站

网站建设2019,河北省衡水市景县规划网站,页面设计稿,软件设计app摘要 剑指 Offer 30. 包含min函数的栈 一、栈解析 package Stock;import java.util.Stack;/*** Classname JZ30min函数栈* Description TODO* Date 2023/2/24 18:59* Created by xjl*/ public class JZ30min函数栈 {/*** description 最小栈的含义是每次从栈中获取的数据都是…摘要 剑指 Offer 30. 包含min函数的栈 一、栈解析 package Stock;import java.util.Stack;/*** Classname JZ30min函数栈* Description TODO* Date 2023/2/24 18:59* Created by xjl*/ public class JZ30min函数栈 {/*** description 最小栈的含义是每次从栈中获取的数据都是最小* param: null* date: 2023/2/24 19:00* return:* author: xjl*/class MinStack {StackInteger stack;/** initialize your data structure here. */public MinStack() {stack new Stack();}/*** description 每次都是push两个数据当前数据和当前最小的数据* param: x* date: 2023/2/24 19:01* return: void* author: xjl*/public void push(int x) {if (stack.isEmpty()) {stack.add(x);stack.add(x);} else {int valstack.peek();if (val x) {stack.add(x);stack.add(x);} else {stack.add(x);stack.add(val);}}}/*** description 每次都是弹出两个数据* param:* date: 2023/2/24 19:02* return: void* author: xjl*/public void pop() {stack.pop();stack.pop();}/*** description 获取顶部的元素就是获取第二个元素* param:* date: 2023/2/24 19:02* return: int* author: xjl*/public int top() {int minstack.pop();int valstack.pop();stack.push(val);stack.add(min);return val;}/*** description 每次都是的获取最顶部的元素 * param: * date: 2023/2/24 19:03* return: int* author: xjl*/public int min() {return stack.peek();}} }复杂度分析 时间复杂度对于题目中的所有操作时间复杂度均为O(1)。因为栈的插入、删除与读取操作都是 O(1)我们定义的每个操作最多调用栈操作两次。空间复杂度O(2n)其中n为总操作数。最坏情况下我们会连续插入n个元素此时两个栈占用的空间为O(n)。 二、使用两个栈来实现 对于栈来说如果一个元素a在入栈时栈里有其它的元素b, c, d那么无论这个栈在之后经历了什么操作只要a在栈中b, c, d 就一定在栈中因为在 a 被弹出之前b, c, d 不会被弹出。 因此在操作过程中的任意一个时刻只要栈顶的元素是 a那么我们就可以确定栈里面现在的元素一定是 a, b, c, d。 那么我们可以在每个元素a入栈时把当前栈的最小值m存储起来。在这之后无论何时如果栈顶元素是 a我们就可以直接返回存储的最小值m。 按照上面的思路我们只需要设计一个数据结构使得每个元素 a 与其相应的最小值 m 时刻保持对应。因此我们使用一个辅助栈与元素栈同步插入与删除用于存储与每个元素对应的最小值。 当一个元素要入栈时我们取当前辅助栈的栈顶存储的最小值与当前元素比较得出最小值将这个最小值插入辅助栈中当一个元素要出栈时我们把辅助栈的栈顶元素也一并弹出在任意一个时刻栈内元素的最小值就存储在辅助栈的栈顶元素中。 class MinStack {DequeInteger Stack;DequeInteger minStack;public MinStack() {Stack new LinkedListInteger();minStack new LinkedListInteger();minStack.push(Integer.MAX_VALUE);}public void push(int x) {Stack.push(x);minStack.push(Math.min(minStack.peek(), x));}public void pop() {Stack.pop();minStack.pop();}public int top() {return Stack.peek();}public int min() {return minStack.peek();} } 复杂度分析 时间复杂度对于题目中的所有操作时间复杂度均为O(1)。因为栈的插入、删除与读取操作都是 O(1)我们定义的每个操作最多调用栈操作两次。空间复杂度O(2n)其中n为总操作数。最坏情况下我们会连续插入n个元素此时两个栈占用的空间为O(n)。 博文参考 《leetcode》
http://www.w-s-a.com/news/417389/

相关文章:

  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发
  • 网站方案书图书馆网站建设公司
  • 公司取名网免费版在线网站优化公司
  • dw怎么做秋季运动会网站九江集团网站建设