题目

题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

解题思路

暴力做法:

  1. 遍历一遍,找最小的数,然后返回。
# -*- coding:utf-8 -*-
class Solution:def __init__(self):self.mys=[]def push(self, node):# write code hereself.mys.append(node)def pop(self):# write code hereself.mys.pop()def top(self):# write code hereself.mys.pop(1)def min(self):# write code hereif len(self.mys)==0:return Nonemin_num = self.mys[0]for i in self.mys:if i < min_num:min_num = ireturn min_num

自己的思路太暴力,晚上回去看看书。

做了几家笔试,发现同样的思路c++能过,但python却超时了。
只能开始转战c++啦!

剑指offer解题思路:

  1. 建立两个栈,数据栈用来存放每次存的数据;辅助栈用来存当前最小的数据,同时能找到次小的数据。
  2. 存入辅助栈的时候要判断该栈是否为空,为空则存放该值;
  3. 不为空,则判断该值是否小于辅助栈的栈顶元素(即最小值),小于则存放该值;
  4. 不小于则存放辅助栈的栈顶元素。
class Solution {
public:void push(int value) {m_data.push(value);if(m_min.size()==0 || value<m_min.top()){m_min.push(value);}else{m_min.push(m_min.top());}}void pop() {if(m_data.size()>0 && m_min.size()>0){m_data.pop();m_min.pop();}          }int top() {if(m_data.size()>0 && m_min.size()>0){return m_data.top();}}int min() {if(m_data.size()>0 && m_min.size()>0){return m_min.top();}}
private:stack<int> m_data;stack<int> m_min;
};

剑指offer:包含min函数的栈 python实现相关推荐

  1. python剑指offer 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution:def _ ...

  2. 剑指Offer 包含min函数的栈

    时间限制:1秒 空间限制:32768K 热度指数:158697 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 给出代码: cla ...

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

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 先介绍一下java.util.Stack.peek()方法实例: 下面的例子显示java.util.Stack.pee ...

  4. 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)

    描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有: push(value ...

  5. 剑指 Offer 30. 包含min函数的栈 (python实现)

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  6. 剑指offer---包含min函数的栈

    题目:包含min函数的栈 要求:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). class Solution { public:void pus ...

  7. 剑指Offer-Python-包含min函数的栈

    题目:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路:占了python的便宜,直接用min()函数. # -*- co ...

  8. 剑指Offer 30.包含 min 函数的栈(Python)

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.top.push 及 pop 的时间复杂度都是 O(1). # 例子: MinStack minSta ...

  9. 剑指Offer30-包含min函数的栈(单调栈)

    问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinStack minStac ...

最新文章

  1. 屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
  2. Integer 中的缓存类IntegerCache
  3. qt调用import sys库_Python模块之 sys 模块
  4. 信息学奥赛C++语言: 区间内的真素数
  5. 【LeetCode】图论 graph(共20题)
  6. linux任务处理函数,Linux信号掩码和信号处理函数
  7. php和nginx如何,php和nginx如何交互
  8. 如何在SQL Server数据库中删除角色
  9. 免费漫画系统,漫城cms内容管理系统,免费原生app
  10. 决策树---使用三种方法对数据建立决策树
  11. linux rpm -qa|grep -i mysql_【LINUX】linux中rpm是什么意思
  12. matlab如何找出相似的图,图像相似性搜索的MATLAB实现
  13. element 如何使用自定义icon图标
  14. 猫哥说创业:发布软文赚钱术(1)
  15. 应该用BPM管理业务规则吗?
  16. 科大星云诗社动态20210513
  17. [转]加盐hash保存密码的正确方式
  18. axios库读不到cookie_Vue axios 跨域请求无法带上cookie的解决
  19. 微信小程序用定时器实现倒计时效果
  20. 二极管 三极管 MOS管的区别

热门文章

  1. [Android问答] 开发环境问题集锦
  2. AOSuite V2.7 发布,JavaEE快速开发平台
  3. Sublime Text使用教程【转】
  4. socket模块简单使用
  5. Windows server 2008 R2 通过策略关闭密码复杂性
  6. qlabel 边加载边更新_王者荣耀:9月版本更新,九位英雄调整,三大战边回归,飞牛笑了...
  7. mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优
  8. springboot 使用Jenkins实现自动化部署
  9. Ehcache配置参数详解
  10. 2021北京智源大会圆满闭幕,现场8千人,参会7万人,发布「悟道2.0」全球最大万亿级模型...