当前位置:网站首页>设计一个有getMin功能的栈
设计一个有getMin功能的栈
2022-06-28 03:34:00 【牛哄哄的柯南】
设计一个有getMin功能的栈
【题目】
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
【要求】
1.pop、push、getMin操作的时间复杂度都是O(1)。
2.设计的栈类型可以使用现成的栈结构。
【思路】
使用两个栈,一个栈a正常的进出,另外一个栈b用来维护最小值,时刻保持b栈的栈顶是当前a栈中的最小值。
方法一【两栈深度不一致】:入栈时,每次入a栈的时候,如果b栈为空,入a栈同时进入b栈,如果入a栈的值比b栈顶大,则不入,反之,进入b栈,更新最小值;出栈时,如果出栈值等于b栈顶,就把b栈顶也出了,更新最小值,反之,b栈不更新。
举例:依次压入3、4、5、1、2、1的过程中,stackData(a)和stackMin(b)的变化如下图所示。
说明:图片来自左神的程序代码面试指南,仅供学习使用。

方法二【两栈深度保持一致】:入栈时,进入a栈时,如果b栈为空,进入b栈,如果b栈不为空且b栈栈顶小于a栈新入栈的值,那么把b栈的栈顶再次入
边栏推荐
猜你喜欢

软件测试报告怎么编写?第三方性能报告范文模板来了

美创入选“2022 CCIA中国网络安全竞争力50强”榜单

Open the field of maker education and creation

KVM常用命令详解

La norme européenne en 597 - 1 pour les meubles est - elle la même que les deux normes en 597 - 2 pour les ignifuges?

光伏板怎么申请ASTM E108阻燃测试?

门级建模—学习笔记

Learning notes of digital circuit (II)

【小程序实战系列】电商平台源码及功能实现

2021年终总结及2022年展望
随机推荐
Zipkin service link tracking
小程序的防抖节流怎么写?
Notes to friendship chain
Understanding and learning of parental delegation mechanism
How to write anti shake throttling for small programs?
How to learn a programming language systematically| Dark horse programmer
用Pycharm开发Flask框架设置debug模式没有效果的解决办法
基于arm5718的Shell脚本参数传递的2种方法
黑體輻射初探
回溯—迷宫问题
English grammar_ Adjective / adverb Level 3 - Comparative_ Useful Expressions
等保2.0密码要求是什么?法律依据有哪些?
Elk builds log analysis system + Zipkin service link tracking integration
如何修改SE38编辑器主题
Does the applet image component not display pictures?
gcd最大公约数
2022年6月对自己近况的一次总结
Principle and Simulation of switching power supply buck circuit
04 summary of various query operations and aggregation operations of mongodb
Pointer linked list