数据结构:栈、哈希表
思路:遍历nums2,哈希表存储每个元素后第一个大于它的元素。栈为递减栈,当遇到比栈顶元素大的元素,依次弹出元素,存入哈希表。最后遍历nums1,hash[nums[i]]组成的列表即为所求。
如 nums1 = [4,1,2], nums2 = [1,3,4,2].
stack=[1] hash[1]=3 hash[3]=-1(第一次出现该元素,hash值为-1)
stack=[3] hash[3]=4 hash[4]=-1 stack=[4] stack=[4,2] hash[2]=-1
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
stack=[]
hashmap={}
for num in nums2:
while len(stack)>0 and stack[-1]<num :
hashmap[stack.pop()]=num
hashmap[num]=-1
stack.append(num)
return [hashmap[i] for i in nums1]
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!