一、单调栈的概念
单调栈是指,栈里面的元素从栈顶到栈底的排列顺序都是单调的(要么递减,要么递增)
二、原题展示

利用单调栈的解法代码(看官方解法二仿写):

利用单调栈的解法代码(官方解法二仿写):
这里代码的单调栈sta起到的作用是——存放nums的下标.
然后比较栈顶下标对应的元素与正常遍历nums[i%len]的大小,
- 如果nums[i%len]较小,那么将其下标继续放入栈,使栈下标对应的元素是递减排列。
- 如果栈顶下标对应的元素较小,那么就找到了题目要的元素nums[i%len],便放入ret()中,然后继续pop(),栈的下一个元素与这个比较。直到不满足while的条件
值得注意的是,nums[i%len],这个对下标取余的想法,我觉得很巧妙
其余的没什么好说的,理解之后其实很简单,我之前是用两遍循环暴力求解,没什么水平
看看这个时间差别,单调栈是个好东西。
如果有想交流,欢迎在评论里与我交流。
这是这个题目的连接:
https://leetcode-cn.com/problems/next-greater-element-ii/solution/xia-yi-ge-geng-da-yuan-su-ii-by-leetcode-bwam/
本文介绍了如何使用单调栈解决LeetCode中的「下一个更大元素II」问题。代码示例展示了单调栈如何存储数组下标,并通过比较找到下一个更大的元素。重点在于对数组下标取余的巧妙运用,简化了问题的解决过程。作者分享了从暴力求解到理解单调栈优化的思路转变,并鼓励读者进行交流讨论。
520

被折叠的 条评论
为什么被折叠?



