当前位置:网站首页>设计一个有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栈的栈顶再次入
边栏推荐
- Meichuang data security management platform has obtained the evaluation certificate of "data security product capability verification plan" of the Institute
- How to modify a se38 editor theme
- Pointer linked list
- Zipkin service link tracking
- AS 3744.1标准中提及ISO8191测试,两者测试一样吗?
- 01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
- 双亲委派机制的理解学习
- 等保2.0密码要求是什么?法律依据有哪些?
- How to write anti shake throttling for small programs?
- 使用tensorboard进行loss可视化
猜你喜欢

The operating mechanism of spectrogram in audio Science

A Preliminary Study of Blackbody radiation

《性能之巅第2版》阅读笔记(二)--CPU监测

双亲委派机制的理解学习

A solution to the inefficiency of setting debug mode in developing flask framework with pychar

KVM常用命令详解

Chapter 1 Introduction to bash

品达通用权限系统(Day 5~Day 6)

猫狗队列的问题

数字电路学习笔记(二)
随机推荐
门级建模—学习笔记
上线MES系统后,企业发生了这些变化......
光伏板怎么申请ASTM E108阻燃测试?
MySQL 主从复制、分离解析
使用tensorboard进行loss可视化
一文告诉你什么是 Kubernetes
@Transactional失效的几种场景
Detailed explanation of iptables firewall rules and firewalld firewall rules
第14章 AC-DC电源前级电路 笔记一
由两个栈组成的队列
Chapter 14 AC-DC power supply front stage circuit note I
【MySQL】多表连接查询
Door level modeling - learning notes
English grammar_ Adjective / adverb Level 3 - Comparative_ Useful Expressions
Understanding and learning of parental delegation mechanism
双亲委派机制的理解学习
ERP升级的另一种选择,MES系统
Two methods of shell script parameter passing based on arm5718
A solution to the inefficiency of setting debug mode in developing flask framework with pychar
leetcode:单调栈结构(进阶)