[503][中等][栈] 下一个更大元素 II
题目描述
输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。解题思路
参考资料
最后更新于
输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。最后更新于
class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]:
k = len(nums)
result = [-1] * k
stack = []
for i in range(2 * k - 1):
i = i % k
while stack and nums[stack[-1]] < nums[i]:
index = stack.pop()
result[index] = nums[i]
stack.append(i)
return result