何为最小栈?栈最基础的操作是压栈(push)和退栈(pop),现在需要增加一个返回栈内最小值的函数(get_min),要求get_min函数的时间复杂度为o(1)。python的栈肯定是使用list实现,只要将list的append和pop封装到stack类中,即实现了压栈和退栈。如果不考虑时间复杂度,我们第一反应一定是min(),min()可以在不开辟新空间的情况下o(n)的返回栈内最小值。但是如果栈内元素很多,并且get_min方法需要频繁调用时,min高耗时的缺点就被放大,那么理想的方法就是空间换时间来降低时间复杂度。

#!/usr/bin/python
# -*- coding: utf-8 -*-class stack(object):stack_list = []min_list = []min = Nonedef push(self, x):if not self.stack_list:self.min = xself.min_list.append(self.min)self.stack_list.append(x)returnself.stack_list.append(x)if self.min >= x:self.min = xself.min_list.append(self.min)returndef pop(self):pop_result = Noneif self.stack_list:pop_result = self.stack_list[-1]if self.stack_list.pop() == self.min:self.min_list.pop()if self.min_list:self.min = self.min_list[-1]else:self.min = Nonereturn pop_resultelse:self.min = Nonereturn pop_resultdef print_stack(self):print "stack---->", self.stack_listreturndef get_min(self):return self.min

参考:

https://www.cnblogs.com/baiyb/p/8443337.html

https://blog.csdn.net/qq_36528804/article/details/82929234

招行算法2020届实习技术面编程题:实现O(1)最小栈(手撸代码)相关推荐

  1. 招商银行信用卡中心21届实习笔试编程题

    第一题 镜像字符串 给一个序列x,如果x和它的逆序列y的每一位都是镜像关系,则输出"yes"否则输出"no" 1镜像1,2镜像5,3镜像8,4镜像7,6镜像9. ...

  2. 海康威视2019年校园招聘内推码(2019届春招、2020届实习/秋招)

    官宣拥有内推码的同学,同等条件择优录取,在每一个环节都会更加具有优势 海康威视2019年校园招聘内推码(2019届春招.2020届实习/秋招): 5S3QAI (最好复制内推码,不要写错了,写错了可能 ...

  3. 【vivo2021届秋季校招编程题】【java】广度优先搜索(BFS)/深度优先搜索(DFS)找最短路径长度

    vivo2021届秋季校招编程题 图中 找两点间的最短路径长度 广度搜索bfs/深度搜索dfs vivo游戏中心的运营小伙伴最近接到一款新游戏的上架申请,为了保障用户体验,运营同学将按运营流程和规范对 ...

  4. 美图2018届校园招聘编程题(AC)

    今天分享一下热乎乎的美图2018届校园招聘编程题的代码实现,详情如下. 首先揭秘一下四天前的智商题: 解答:再倒出一片A,然后把这四颗药片各自一分为二,吃每颗药片的一半,剩下的明天吃即可. 注:(如果 ...

  5. 阿里2020届校招笔试劝退题——你大爷还是你大爷

    阿里巴巴 2020 届的校招笔试结束了,群里哀声一片,来看这些经历了阿里秋招"洗礼"的小伙伴的真实状态. 下面这些人嘛......就有些偏激了,哈哈哈 先来说一下阿里笔试题构成:1 ...

  6. 华为算法工程师-2020届实习招聘题

  7. 海康威视 2020届实习+秋招面试 分享

    岗位:嵌入式软件工程师 2020年毕业,已经是19年的面试情况了,简单记录一下提供参考,4月左右实习面试和9月左右秋招面试都参加了,分别介绍一下情况. 公司概况 我们了解的海康是以安防著称的,安防方面 ...

  8. 华为机试python需要需要当时编译通过吗_华为校招软开算法岗历年机试编程题77道C++代码详解(五)...

    温馨提示:考虑到华为每年校招机试在牛客网进行,所以本文以及同系列其他八篇文章的所有代码均仅保证在牛客网华为机试页面100%accepted.其他编译器使用本代码可能会出现不通过的情况,请知晓. 41. ...

  9. 编码-京东实习笔试编程题-糖果问题-动态规划

    问题 某糖果公司专门生产儿童糖果,它最受儿童欢迎的糖果有A1.A2两个序列,均采用盒式包装.包装好的A1类糖果体积为一个存储单位,而包装好的A2类糖果体积正好是A1类的两倍. 这两类糖果之所以广受儿童 ...

最新文章

  1. lisp坐标一键生成_联排建筑一键生成?你的SU有外挂吧!
  2. [深入浅出Cocoa]iOS网络编程之Socket
  3. 入门Python神经机器翻译,这是一篇非常精简的实战指南
  4. WCF 接收我服务的 HTTP 响应时发生错误
  5. 插件框架实现思路及原理
  6. Result Maps collection already contains value for ***的问题
  7. 算法面试题解答(七)
  8. android 底部动画,Android实现360手机助手底部的动画菜单
  9. Modularity(模块化-无模块化)
  10. Windows备份服务器运行失败,用Windows Server Backup搞定服务器备份
  11. Open vSwitch(OVS)文档
  12. 为什么要重写hashCode()
  13. mysql事务 并发_Mysql关于事务并发带来的问题
  14. gbadev上的资料搬运贴
  15. android 半浮层框架
  16. 配置谷歌android依赖镜像
  17. 牛客多校9 B. Two Frogs (概率dp+前缀和优化)
  18. 论文发表投稿流程的说明
  19. 建筑八大员考试武汉施工员考试道路施工技术的管理与安全控制
  20. R语言ggplot2可视化改变字体大小实战:单个图片设置字体大小、全局设置字体大小

热门文章

  1. C语言I———博客作业05
  2. 107. 进程间通信 - 信号灯集信号量实现进程间同步通信
  3. 整理记录一些好用的随机图API
  4. 控制结构(强化):11.牛友
  5. 全球首个微信应用号开发教程!
  6. vscode 是干什么用的_VS code 可以做什么?
  7. 使用Java来完成一些小项目
  8. 类的结构里为什么会有rw、ro以及rwe
  9. 【多轮对话】任务型多轮对话状态跟踪-NBT原理
  10. ocaml递归列表March_failure