栈相关算法题

栈:
方法: push pop peek()
栈的实现 : 
数组实现 (固定大小 + 可动态扩展)
链表实现
栈的空间复杂度是多少?
O(1),虽然这里需要大小为n的数组,但是这个数组时必须的,我们所说的空间复杂度,指的是除了基础数据存储外还需要的存储空间。

栈的实际使用
函数调用:
操作系统给每个线程分配了独立内存空间,其被组织成栈的结构;用来存储函数调用和临时变量。每进入一个函数,就压入一个栈帧;函数调用完成,对应的栈帧弹出;
表达式求值:
一个栈存值 一个栈存符号 如果将要存入的运算符的优先级和栈顶运算符优先级一样或更低,则进行运算
括号匹配:
 [{()}([])] 等都为合法格式,而{[}()]不合法如何判断?
 一直压入,遇到和栈顶相同的符号弹出,最后为空则说明合法

浏览器前进后退功能:
abc可回退到b、a,再前进b、c;

两个栈z1 z2,每次页面修改前进压入z1,后退出栈到z2中,前进z2出栈到z1


leetcode:155 用数组来设计栈: push pop top getMin 四个方法
在常数时间内检索到最小元素的栈。
 
仅仅使用一个数组 + 保存最小值的变量
数组如下: -2 0 min=-2
压入-3,比min小,需要先压入老的min,再压入-3;结果:数组-2 0 -2 -3,min=-3
push比-3大的数,如1 正常push 数组: -2 0 -2 -3 1 min-3
pop一次 数组:-2 0 -2 -3 min-3
pop一次 顶部与min等 弹出2个 数组:-2 0 min=-2

核心思想:
压入比minValue还小的数,先压入老的minValue
弹出min的时候,弹出两次,第一次是当前min,第二次是前半部分的min

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值