Python 为什么我的堆栈代码对基本情况有效,但对较长的列表无效?

Python 为什么我的堆栈代码对基本情况有效,但对较长的列表无效?,python,arrays,stack,Python,Arrays,Stack,我编写了以下代码来解决以下问题: 您将获得两个整数数组nums1和nums2,这两个数组都是唯一元素,其中nums1是nums2的子集 在nums2的相应位置查找nums1元素的所有下一个较大数字 nums1中数字x的下一个较大数字是nums2中其右侧的第一个较大数字。如果该数字不存在,请为此数字返回-1 例如: 输入:nums1=[4,1,2],nums2=[1,3,4,2] 输出:[-1,3,-1] 说明: 对于第一个数组中的数字4,您无法在第二个数组中找到下一个更大的数字,因此输出-1。

我编写了以下代码来解决以下问题:

您将获得两个整数数组nums1和nums2,这两个数组都是唯一元素,其中nums1是nums2的子集

在nums2的相应位置查找nums1元素的所有下一个较大数字

nums1中数字x的下一个较大数字是nums2中其右侧的第一个较大数字。如果该数字不存在,请为此数字返回-1

例如:

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

说明: 对于第一个数组中的数字4,您无法在第二个数组中找到下一个更大的数字,因此输出-1。 对于第一个数组中的数字1,它在第二个数组中的下一个较大的数字是3。 对于第一个数组中的数字2,第二个数组中没有下一个更大的数字,因此输出-1

我的代码:

def nextGreaterElement(nums1, nums2):
    hashmap = {}
    stack = []

    #edge case
    hashmap[nums2[-1]] = -1

    for i in range(len(nums2)-1):
        if nums2[i] <nums2[i+1]:
            hashmap[nums2[i]] = nums2[i+1]
            if stack:
                print(stack)
                for j in stack:
                    hashmap[j] = nums2[i+1]
                stack.clear()

        else:
            stack.append(nums2[i])

    #Assigns -1 to all elements left in stack and adds each key value pair to hashmap
    if stack:
        for i in stack:
            hashmap[i] = -1



    final_output_list = list(map(hashmap.get,nums1))

    return print(final_output_list)

nextGreaterElement(nums1,nums2)
def nextgreaterelation(nums1、nums2):
hashmap={}
堆栈=[]
#边缘案例
hashmap[nums2[-1]]=-1
对于范围内的i(len(nums2)-1):
如果nums2[i]