503. Next Greater Element II

本以为 monotonic stack 应该不会经常出现,没想到相关的题目还不少...

  • 要找 next xxx --> 逆序遍历

  • exact next greater --> stack

circular array 本身没有造成什么困扰,当作两个相同 array 首位相接就是了。

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        res = [-1 for _ in range(len(nums))]
        stack = collections.deque([])
        for _ in range(2):
            for i in range(len(nums)-1, -1, -1):
                if res[i] == -1:
                    while stack and nums[stack[-1]] <= nums[i]: stack.pop()
                    if stack: res[i] = nums[stack[-1]]
                stack.append(i)
        return res

Last updated

Was this helpful?