解题思路
-
res将存储符合下一个更大元素条件的键值对,
-
因为nums1是nums2的子集,所以可以直接在nums2中找下一个更大的数字,将符合条件的存入res。如果1的下一个更大数字是3,即
res = {1:3}
, 3的下一个更大数字是4,即res = {3:4}
-
将遍历过的数字存入stack中
-
最后再将res与nums1匹配,如果没有对应的下一个更大的数字就存入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]