Java教程

单调栈-下一个更大元素

本文主要是介绍单调栈-下一个更大元素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

单调栈使用满足如下:

输入: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

 

这篇关于单调栈-下一个更大元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!