前往此题

解题思路

  1. res将存储符合下一个更大元素条件的键值对,

  2. 因为nums1nums2的子集,所以可以直接在nums2中找下一个更大的数字,将符合条件的存入res。如果1的下一个更大数字是3,即 res = {1:3}, 3的下一个更大数字是4,即res = {3:4}

  3. 将遍历过的数字存入stack中

  4. 最后再将resnums1匹配,如果没有对应的下一个更大的数字就存入1,否则返回对应数字

代码

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        res = {}
        stack = []

        for n in nums2:
            while stack and stack[-1] < n:
                res[stack.pop()] = n
            stack.append(n)
        return [res.get(x, -1) for x in nums1]