acm算法思想总结

本文介绍了数据结构中的单调栈和单调队列的概念及其应用,如单调栈用于维护单调递增或递减的序列,而单调队列则在滑动窗口问题中提升效率。此外,还讲解了字典树的构造原理和应用场景,以及图论中的二分图匹配、最短路径算法(迪杰斯特拉、SPFA、弗洛伊德),强连通和双连通分量,以及网络流和最小生成树的Prim和克鲁斯卡尔算法。最后提到了后缀数组和AC自动机的实现原理。
摘要由CSDN通过智能技术生成

能解释一下单调栈吗?{
单调栈就是维护栈内元素保持单调性,单调递增或单调递减。
比如给一个数组,大小为5,元素分别是 1 3 2 5 4 我要维护单调递增的栈,
此时栈内元素为空,从数组开头扫描,最开始是1,因为栈空,所以直接加入到栈内,
接下来是3,3比栈顶元素1要大,保持单调递增,加到栈内,接下来是2,比栈顶元素
3 要小,弹出3,栈顶元素为1,2比1大,此时可加入到栈顶。可以知道2往左边最远
可扩展到1这个位置,不包括1,即1之后的元素到2之前都大于等于2。后面来了5, 5
比2大,加到栈内,最后是4, 4 比5小,弹出5, 4 比2大。所以能够知道2之后的元素
到4之间都大于或等于4。
}
能解释一下单调队列吗?{
单调队列就是维护队列里元素的单调性,单调递增或者单调递减。
比如给一个数组,大小为5,元素分别是 4 1 2 3 5, 我现在给一个滑动窗口,大小
为3,滑动窗口从数组开头开始滑动,每次滑动找出窗口中的最大值。比如刚开始是
4 1 2 ,最大值为4 ,接下来是1 2 3, 最大值是3 ,接下来是2 3 5, 最大值是5.
如果每次滑动一次,就循环去找窗口中的最大值,复杂度是O(n*m), 效率过低&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值