class Solution:
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
# method one 双重循环效率较低
# res = []
# length = len(nums2)
# for i in nums1:
# if (nums2.index(i)+1) < length:
# for j in range(nums2.index(i)+1,length):
# if nums2[j] > i:
# res.append(nums2[j])
# break
# elif j == length-1:
# res.append(-1)
# else:
# res.append(-1)
# return res
# method two 利用字典提升效率
# if nums2 != []:
# dic = {nums2[-1]:-1}
# for index in range(len(nums2)) :
# for j in range(index+1,len(nums2)):
# if nums2[index] < nums2[j]:
# dic[ nums2[index]] = nums2[j]
# break
# elif j == len(nums2)-1:
# dic[nums2[index]] = -1
# return [dic.get(i,-1) for i in nums1]
# return []
# method three 利用栈结构提升效率
dic , stack = {} ,[]
for number in nums2:
while stack and stack[-1] < number:
dic[stack.pop()] = number
stack.append(number)
return [dic.get(i , -1) for i in nums1]