📅  最后修改于: 2023-12-03 14:51:25.597000             🧑  作者: Mango
给定一个圆形数组(最后一个元素下一个是第一个元素),要求对数组中的每一个元素求出它的下一个更大的元素。
如果不存在下一个更大的元素,输出 -1。
可以通过两次遍历数组来解决这个问题。
第一遍遍历:
第二遍遍历:
最后,返回处理完成的数组。
def next_greater_element(nums):
n = len(nums)
stack = []
res = [-1] * n
for i in range(n*2):
while stack and nums[stack[-1]] < nums[i % n]:
res[stack.pop()] = nums[i % n]
stack.append(i % n)
return res
输入:[1, 2, 3, 4, 5]
输出:[2, 3, 4, 5, -1]
输入:[5, 4, 3, 2, 1]
输出:[-1, 5, 5, 5, 5]