栈和队列笔记

删除字符串中相邻相同字母:思路

用一个字符遍历整个字符串,使用一个字符串来存储结果,若存储的结果为空或者遍历的字符不等于最上层字符,就将该字符放入存储结果中,否则就弹出顶层字符。

用栈实现队列:使用两个栈,一个栈做入栈input,另外一个做出栈output。入栈直接将数值压入input即可;出栈 先判断Output是否有数据,如有直接出栈,若没有直接将input内所有数据出栈到output内然后在进行出栈;取最顶层元素,可利用出栈,然后将出栈元素重新压回到output栈中;队列是否为空,直接判断input和output是否为空。

用队列实现栈:使用两个队列que1    que2,用法其实和上面不太一样。两队列其中一个主要是用来备份数据的。入栈:将元素直接push到que1;出栈:将que1中的size-1个数据都出队列到que2中,将que1最后一个元素出队列,然后将que2中元素全部复制到que1,后将que2全部出队列;获取顶部数据:return que1.back();判断队列是否为空:直接判断que1是否为空。

栈和队列是容器适配器,不是容器。默认的容器都是deque。(双向队列左右入口都可以进行进出元素。)

递归的实现就是栈:每一次递归将函数的局部变量、参数值和返回地址等压入栈中。

滑动窗口最大值:因为窗口是滑动的,所以是不可以使用大顶堆,我们只需要维护可能成为窗口的最大值就好了。使用deque底层容器,实现单调队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值