剑指offer.30 包含min函数的栈

本题主要考察栈结构的使用,压栈和弹栈操作都只需要借用top索引指向数据即可,本题难点在于如何压缩时间为O(1),如果采用遍历栈空间,时间复杂度是O(n),那么我们可以采用辅助栈B来存储最小值,思路如下:

1.栈A(stack1):用来正常存储所有push进栈的数据,执行正常的push(),pop(),top()操作

2.栈B(stack2):  仅当栈B为空栈或新传入数据小于等于B顶端数据时(注意,这里一定是小于等于,而不是小于),将新传入数据同时放入A和B两个栈中,否则只放进A栈,此时B栈顶端数据始终是A栈中所有数据的最小值,因此调用min函数时只需要输出B栈顶端数据即可。

代码如下:

class MinStack {int stack1[],stack2[];int top1 = -1;int top2 = -1;/** initialize your data structure here. */public MinStack() {stack1 = new int[10000];stack2 = new int[10000];}public void push(int x) {top1++;stack1[top1] = x;if (top2 == -1 || x <= stack2[top2] ){top2++;stack2[top2] = x;}}public void pop() {if (stack1[top1] == stack2[top2]){top2--;}top1--;}public int top() {return stack1[top1];}public int min() {return stack2[top2];}
}

算法题打卡-超人进化(剑指offer第一天)相关推荐

  1. 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合

    文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...

  2. leetcode每日一题第三十三天-剑指 Offer 11. 旋转数组的最小数字(easy)

    前言 通过leetcode记录自己每天坚持刷题,以此监督自己的学习.不能放假了就懈怠

  3. 在数组中查找指定元素_剑指 offer 第一题: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. 牛客网-剑指offer 第一题(二维数组中的查找)

    //题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. /*第一种 将每一行 ...

  5. python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...

    题目如下: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目不难,可以采用位操作来实现,利用异或运算来计算不带进位的加法结果,利用与运算计算进位的标志,然后将这两个 ...

  6. 剑指offer 第一章 面试的流程

    面试的流程 面试的三种形式 电话面试:形象化语言讲解细节:如果没有听清楚和听懂问题,不要不懂装懂,答非所问 共享桌面,远程面试:编程习惯和调试能力.1,思考清楚再开始编码,先想思路,考虑时间和空间复杂 ...

  7. python数据结构与算法刷题——剑指offer第二版加部分leetcode题

    说不清楚,只能看代码理解的用红色标出 查找算法:查找较排序来说较简单,不外乎顺序查找和二分查找.哈希表查找和二叉排序树查找.(很多面试官喜欢让应聘者写出二分查找(如test53)的代码)[注意:二分查 ...

  8. 最新算法校招编程-剑指offer、Leetcode常考题目及解法分享

    本资源整理了BAT.TMD等互联网算法岗校招面试过程中常考的LeetCode和剑指offer编程题:此外,还整理了部分百度.腾讯.阿里.今日头条相关的面试经验,对于正准备校招面试的同学非常值得参考复习 ...

  9. 剑指offer打卡计划、建议(持续进行)

    文章目录 一些计划. 收获只给那些付出的人 聊一聊数据结构与算法 聊一聊刷题的建议 一些计划. 这个寒假笔者打算和大家一起开启刷题计划,先搞剑指offer.如果氛围可以可以持久搞leetcode. 至 ...

  10. C#LeetCode刷题-剑指Offer

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...

最新文章

  1. Spring Boot 自动配置之条件注解
  2. Java黑皮书课后题第4章:*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta……计算被这四个城市所围起来的区域面积
  3. 社区架构培训班四期开始报名了
  4. java简单多线程_java中实现多线程的几种方式(简单实现)
  5. 【报告分享】智能时代的商业地产数字变革与发展报告.pdf(附下载链接)
  6. 最新版spark1.1.0集群安装配置
  7. 关于c3p0连接池连接mysql数据库需要注意的几点
  8. 阿里mysql锁_【mysql】mysql中的锁机制
  9. UVA11752 The Super Powers —— 数论、枚举技巧
  10. 在 Mac 上修复 Touch ID 问题的 6 种方法
  11. SlidingMenu使用笔记
  12. 黑客是如何入侵电脑的,没有互联网可以入侵电脑吗?
  13. 15个开发者最亲睐的Andr​​oid代码编辑器
  14. html字体中英文设置,用 CSS3 指定网页的中英文分别使用不同字体
  15. 新电脑自带win11刷win10 系统之后出现的触摸屏/板失灵等问题
  16. Android10.0 Service启动源码解析
  17. 网易视频云资深产品经理钱栩磊:2B产品经理养成记
  18. IT屌丝:SKYCC组合营销软件事件营销案例
  19. PHP发送文件到JAVA项目
  20. 数学之美:激发思考的奥秘

热门文章

  1. OpenStack与Tungsten Fabric如何集成丨TF成立大会演讲实录
  2. 计算机可以关闭家庭组,win10系统禁用(关闭)家庭组功能的具体方法
  3. cpu超线程优缺点_今天看了下百度百科!看到了超线程的优缺点啊!转!
  4. 2019-11-29奈奎斯特和香农定理
  5. Python 实现数据分析中的 帕累托、漏斗、RFM、雷达图
  6. [精简]托福核心词汇32
  7. Null(空值)和 Undefined(未定义)
  8. axios delete
  9. c语言中罗马字母数字,C语言程序经典示例—-(22)阿拉伯数字转换为罗马数字...
  10. 适合全家一起看的温馨大电影-《熊出没之雪岭熊风》