随笔分类 - leetcode-单调栈
摘要:链接 https://leetcode.cn/problems/trapping-rain-water/description/ 思路 1. 在线处理。既然是接雨水,那肯定是形成一个类似于碗的结构才能接。可以先找到一个最大值当兜底,然后不断的用当前border去夹逼。如果遇到比当前border高的,
阅读全文
摘要:单调栈有什么用? 栈为容器,特性是后入先出。 经典栈的应用场景大概为:浏览器的后退按钮实现等。即:栈的一个应用场景就是状态保持。 单调栈和经典栈的区别是,栈是一股脑的存,单调栈是让栈内的元素(或者是栈内元素的对应元素)具有单调的特性。 那这个单调的特性有啥用呢?我们不考虑其他的,只考虑栈内元素和待入
阅读全文
摘要:链接 https://leetcode.cn/problems/next-greater-element-ii/description/ 思路 我在单调栈这块是真的不会......稍微一变就想不明白了, 得找个时间攻克一下 这个题目,我能想到的办法就是把数组拉长到2倍(模拟循环数组),然后对其进行单
阅读全文
摘要:链接 https://leetcode.cn/problems/132-pattern/description/ 思路 这题其实不难,就是边界条件难想。 我们可以先保证单调栈里是逆序,然后判断单调栈中较小的值是否大于当前元素(满足132的1和2的关系)。 代码 class Solution: def
阅读全文
摘要:链接 https://leetcode.cn/problems/remove-k-digits/description/ 思路 这个题目要求移除k位后,剩下的数字最小。既然剩下的数字最小,那就牵扯到了类似于“字典序”这样一个概念。这样的题目是适合用单调栈来进行解决的。 依然是单调栈的三板斧: 1.
阅读全文
摘要:链接 https://leetcode.cn/problems/remove-duplicate-letters/description/ 思路 这个题并不是传统的单调栈,所以硬套单调栈会懵逼。 什么时候用单调栈? 这个题目要求去除重复字母,还要保持字典序。 注意,跟相对顺序相关的题目,如:其后比他
阅读全文
摘要:链接 https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/description/ 思路: 单调栈 单调栈,顾名思义,就是在栈内,元素要么是单调递减的,要么是单调递增的。 这个题目要求我们找下一个更小
阅读全文
摘要:链接 https://leetcode.cn/problems/next-greater-element-i/description/ 思路 1. 暴力解法 暴力解法没啥好说的,对于nums1中的元素,先找到其在nums2中的位置,然后往后找比他大的第1个元素就好了。这样的做法是O(m*n)的时间复
阅读全文