剑指Offer:包含main函数的栈(借助辅助栈)
问题描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
解题思路
笔试时,能通过为大。如果能使用 Java 库中的数据数据和方法就尽量使用。
思路:对 Stack 的原有方法进行封装,数据存入栈 data之中,并借助一个辅助栈 min 来存放最小值。
入栈时,data 栈正常入栈;然后将 node 与 min栈的栈顶元素比较大小,如果 min 栈顶为空或者 node 较小就入辅助栈 min ,否则不如 min 栈。
出栈时,min 的栈顶元素若与栈data 的栈顶元素一样,则栈min 也需要出栈;否则栈min 不执行出栈。
Java 代码
import java.util.Stack;public class Solution {private Stack<Integer> data = new Stack<>();private Stack<Integer> min = new Stack<>();public void push(int node) {data.push(node);if (min.isEmpty() || node < min.peek()) {min.push(node);}}public void pop() {if (data.peek() == min.peek()) {data.pop();min.pop();} else {data.pop();}}public int top() {return data.peek();}public int min() {return min.peek();}
}
复杂度分析:
- 时间复杂度:O(1) --> 因为直接使用了栈的数据结构,出栈入栈的时间复杂度为 O(1)
剑指Offer:包含main函数的栈(借助辅助栈)相关推荐
- 剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 先介绍一下java.util.Stack.peek()方法实例: 下面的例子显示java.util.Stack.pee ...
- python剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution:def _ ...
- 剑指Offer 包含min函数的栈
时间限制:1秒 空间限制:32768K 热度指数:158697 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 给出代码: cla ...
- 剑指offer——面试题7:用两个栈实现队列
剑指offer--面试题7:用两个栈实现队列 Solution1: 注意栈的基本操作与vector略有不同~ class Solution { public:void push(int node) { ...
- 《剑指offer》Partition函数及其Partition函数周边
Partion函数最早出现于快速排序算法,但其代表的分治思想,在<剑指offer>这本书中求数组中位数(面试题39,数组中出现次数超过一半的数字)中也有所涉及,将其汇总在一起,称之为P ...
- 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)
描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有: push(value ...
- 《剑指offer》第九题(用两个栈实现队列)
// 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的 ...
- 剑指offer:面试题09. 用两个栈实现队列
题目:用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有 ...
- [剑指offer]面试题7:用两个栈实现队列
面试题7:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 用两个栈模 ...
最新文章
- C++ socket编程
- 【数据平台】sqoop支持hive和mysql互导的基本语句格式
- android:descendantFocusability
- IT项目管理需要注意的细节
- 【JLOI2013】地形生成
- vs2010设置编辑器背景颜色
- 上海音乐学院计算机考研难吗,上海音乐学院考研难吗?一般要什么水平才可以进入?...
- Kafka : kafka查询某时间段内的消息
- mysql (mariadb)数据库使用 mysqldump 备份全部数据库,并自动按当前时间名保存文件
- linux文件夹可视化工具,4款简单实用的的服务器文件管理工具推荐
- 招商银行一网通H5接口调试和测试报告撰写注意事项
- AI技术内参021-SIGIR2018论文精读:如何对搜索页面上的点击行为进行序列建模?
- Linux Mint TLP设置
- json在java代码混淆出问题_代码混淆 GSON完满解决
- Unity入门--Unity的下载安装及基本使用
- 汝之蜜糖,吾之砒霜— 聊聊软件开发中的最佳实践
- mysql against无法搜索出结果_在搜索少于4个字符的字符串时,MATCH AGAINST在MySQL中不显示记录...
- UML之教学管理系统——3、Rational Rose画顺序图
- 01500105_MLDN-魔乐科技-李兴华【Java核心技术】_JDBC连接Oracle数据库
- 内容全面的企业网站策划书
热门文章
- 苏格拉底的oracle,苏格拉底的五个经典故事
- javascript二维数组转置_VBA数组拆分及维数的转换
- python open ascii codec cant_解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误...
- html元素和属性,HTML常用元素和属性(一)
- RxJava系列4(过滤操作符)
- 先验概率,后验概率,最大似然估计,最大后验概率
- 在想要放弃的时候想想是什么在支撑着你走到了这一步。
- Android笔记之FragmentTabHost实现选项卡
- Android 系统搜索框(有浏览记录)
- 2013多校训练赛第三场 总结