剑指offer:包含min函数的栈 python实现
题目
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(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解题思路:
- 建立两个栈,数据栈用来存放每次存的数据;辅助栈用来存当前最小的数据,同时能找到次小的数据。
- 存入辅助栈的时候要判断该栈是否为空,为空则存放该值;
- 不为空,则判断该值是否小于辅助栈的栈顶元素(即最小值),小于则存放该值;
- 不小于则存放辅助栈的栈顶元素。
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实现相关推荐
- python剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution:def _ ...
- 剑指Offer 包含min函数的栈
时间限制:1秒 空间限制:32768K 热度指数:158697 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 给出代码: cla ...
- 剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 先介绍一下java.util.Stack.peek()方法实例: 下面的例子显示java.util.Stack.pee ...
- 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)
描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有: push(value ...
- 剑指 Offer 30. 包含min函数的栈 (python实现)
剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...
- 剑指offer---包含min函数的栈
题目:包含min函数的栈 要求:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). class Solution { public:void pus ...
- 剑指Offer-Python-包含min函数的栈
题目:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路:占了python的便宜,直接用min()函数. # -*- co ...
- 剑指Offer 30.包含 min 函数的栈(Python)
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.top.push 及 pop 的时间复杂度都是 O(1). # 例子: MinStack minSta ...
- 剑指Offer30-包含min函数的栈(单调栈)
问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinStack minStac ...
最新文章
- 屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
- Integer 中的缓存类IntegerCache
- qt调用import sys库_Python模块之 sys 模块
- 信息学奥赛C++语言: 区间内的真素数
- 【LeetCode】图论 graph(共20题)
- linux任务处理函数,Linux信号掩码和信号处理函数
- php和nginx如何,php和nginx如何交互
- 如何在SQL Server数据库中删除角色
- 免费漫画系统,漫城cms内容管理系统,免费原生app
- 决策树---使用三种方法对数据建立决策树
- linux rpm -qa|grep -i mysql_【LINUX】linux中rpm是什么意思
- matlab如何找出相似的图,图像相似性搜索的MATLAB实现
- element 如何使用自定义icon图标
- 猫哥说创业:发布软文赚钱术(1)
- 应该用BPM管理业务规则吗?
- 科大星云诗社动态20210513
- [转]加盐hash保存密码的正确方式
- axios库读不到cookie_Vue axios 跨域请求无法带上cookie的解决
- 微信小程序用定时器实现倒计时效果
- 二极管 三极管 MOS管的区别
热门文章
- [Android问答] 开发环境问题集锦
- AOSuite V2.7 发布,JavaEE快速开发平台
- Sublime Text使用教程【转】
- socket模块简单使用
- Windows server 2008 R2 通过策略关闭密码复杂性
- qlabel 边加载边更新_王者荣耀:9月版本更新,九位英雄调整,三大战边回归,飞牛笑了...
- mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优
- springboot 使用Jenkins实现自动化部署
- Ehcache配置参数详解
- 2021北京智源大会圆满闭幕,现场8千人,参会7万人,发布「悟道2.0」全球最大万亿级模型...