【内功】基础算法——栈,队列和堆

导语:

下面两个链接是我的leetcode栈和队列的分类。

栈:https://www.cnblogs.com/zhangwanying/p/9886577.html (共40题)

队列:https://www.cnblogs.com/zhangwanying/p/9886581.html(共8题)

堆:https://www.cnblogs.com/zhangwanying/p/9357141.html(共31题)

一、 先来几个栈和队列的基础题复习。

(1)实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

(2)怎么用数组实现栈和队列。

栈用一个 index, push 就是 ++index, pop就是 --index

队列用三个变量,startIdx, endIdx, 和 size (有可能 endIdx < startIdx 的这种情况)

(3)如何用两个栈实现一个队列(lc 232),如何用两个队列实现一个栈(lc 225)

(4)如何仅用递归函数和栈操作逆序一个栈

(5)用栈来求解汉诺塔问题

二、单调栈

它能解决问题就是在 O(N) 的时间复杂度内,找到离一个数数最近的左右两个比它大或者小(或者说更强的数)(找比它大的数的时候,强就是比它大,同理小也一样)。

不要求是数组,数据流也一样的。

比如说给了一个数组,找到一个数离它最近的最大的左右两个数。eg, [1, 3, 2, 0, 9, 3, 4, 6]  比如找 离 4 最近的比它大的左右两个数字就是  [9, 6]

 

 

三、单调队列(滑动窗口 sliding window)

 

 

四、堆 

转载于:https://www.cnblogs.com/zhangwanying/p/10034113.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值