单调栈法python
时间: 2023-11-07 18:03:50 浏览: 54
单调栈法是一种常用的算法,特别适用于解决一些与数组元素大小相关的问题。在python中,可以通过使用list来实现单调栈。下面是一个示例代码:
```
class Solution:
def nextGreaterElement(self, nums):
stack = []
result = [-1] * len(nums)
for i in range(len(nums)):
while stack and nums[i] > nums[stack[-1]]:
result[stack.pop()] = nums[i]
stack.append(i)
return result
```
这段代码的作用是找到数组中每个元素右边第一个比它大的元素。通过维护一个单调递减的栈,可以轻松地找到这个元素。具体的步骤如下:
1. 初始化一个空栈和一个与原数组大小相同的结果数组,结果数组中的元素初始化为-1。
2. 遍历原数组,对于每个元素,执行以下操作:
- 如果栈不为空且当前元素大于栈顶元素,则栈顶元素在结果数组中的值更新为当前元素,并将栈顶元素出栈。
- 将当前元素的索引入栈。
3. 返回结果数组。
这样就可以得到每个元素右边第一个比它大的元素。如果数组中没有比它大的元素,则结果数组中对应位置的值仍为-1。