算法基础
单调栈
以递增单调栈为例,栈顶元素最大,往下依次递减。(由数组生成)
当错序元素要进栈时,将栈顶元素弹出,此时新栈顶元素为原栈顶元素的左侧第一个最小值,而即将加入的元素为数组右侧第一个最小值。
当数组有重复元素时 前面的相同元素弹出
例题:https://leetcode.cn/problems/largest-rectangle-in-histogram/
单调队列
如维护固定滑动窗口的最大值,当滑窗右侧递增时,加入一个新的元素,将前面所有小于它的值都弹出。同时注意滑窗左侧,将过期的最大值丢出队列
例题:https://leetcode.cn/problems/sliding-window-maximum/
KMP
针对匹配子数组的简便方法。O(m + n)
启用next数组
两个匹配过程大致相同,但有些细节处理不一样
例题:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/?envType=problem-list-v2&envId=gTIEdUPX

浙公网安备 33010602011771号