其他分享
首页 > 其他分享> > 单调栈-下一个更大元素

单调栈-下一个更大元素

作者:互联网

单调栈使用满足如下:

输入:nums1=[4,1,2],nums2=[1,3,4,2].

输出:[-1,3,-1]

解释:

对于num1中的数字4 ,你无法在第二个数组中找到下一个更大的数字,因此输出-1。

对于num1中的数字1,第二个数组中数字1右边的下一个较大数字是 3 。

对于num1中的数字2,第二个数组中没有下一个更大的数字,因此输出-1 。

实现:

# next biggest element
stack = []
nums1=[4,1,6,2]
nums2=[1,3,6,9,5,4,2]
dic = {}
for i in nums2:
    while stack and stack[-1] < i:
        # 栈不为空,栈顶元素小于当前数值,此值就是栈顶元素的下一个最大值
        dic[stack[-1]] = i
        stack.pop()
    stack.append(i)
result = [dic.get(e,-1) for e in nums1]
print(dic)
result

 

标签:数字,元素,nums1,dic,nums2,更大,stack,单调,num1
来源: https://www.cnblogs.com/demo-deng/p/16670754.html