LeetCode刷题记录---单调栈专题

每次刷到单调栈算法题将在此博文更新~~~

以下具体理论知识,是参考Carl哥整理的:点击进入
【注:以下刷题顺序均按Carl哥的进行,Carl哥的微信公众号:代码随想录。欢迎大家关注!】

理论基础:

When to use 单调栈?:
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。

复杂度:
时间复杂度为O(n),只需遍历一次;空间复杂度O(n)。相对于暴力解法,单调栈本质是空间换时间,因为需要建立一个栈来记录右边第一个比当前元素的大or小的元素

在使用单调栈的时候首先要明确如下几点:
1.单调栈里只需要存放元素的下标i就可以了,通过索引就能拿出对应元素。
2.单调栈里元素是递增or递减视情况而定

使用单调栈主要有三个判断条件:
1.当前

你可能感兴趣的:(算法与数据结构,单调栈,leetcode,算法,数据结构)