打卡记录
下一个更大元素 IV(单调栈 x2)
链接
class Solution:def secondGreaterElement(self, nums: List[int]) -> List[int]:ans = [-1] * len(nums)s = []t = []for i, x in enumerate(nums):while t and nums[t[-1]] < x:ans[t.pop()] = x # t 栈顶的下下个更大元素是 xj = len(s) - 1while j >= 0 and nums[s[j]] < x:j -= 1 # s 栈顶的下一个更大元素是 xt += s[j + 1:] # 把从 s 弹出的这一整段元素加到 tdel s[j + 1:] # 弹出一整段元素s.append(i) # 当前元素(的下标)加到 s 栈顶return ans