【发布时间】:2021-04-14 10:54:04
【问题描述】:
我有以下代码,其中我们有两个唯一整数列表,nums1 和 nums2;其中 nums1 是 nums2 的子集。我们想将 nums1 的每个元素与 nums2 进行比较,并将 'output_stack' 附加到 nums2 中的下一个最大整数。
例如: 输入:nums1 = [4,1,2], nums2 = [1,3,4,2] 输出:[-1,3,-1] 解释: 对于第一个数组中的数字 4,您在第二个数组中找不到下一个更大的数字,因此输出 -1。 对于第一个数组中的数字 1,第二个数组中的下一个更大的数字是 3。 对于第一个数组中的数字 2,第二个数组中没有下一个更大的数字,因此输出 -1。
def nextGreaterElement(nums1, nums2):
nums1 = sorted(nums1)
nums2 = sorted(nums2)
output_stack = []
for i in range(len(nums1)):
for j in range(len(nums2)):
if nums1[i] ==nums2[-1]:
output_stack.append(-1)
elif nums1[i] == max(nums2):
output_stack.append(-1)
elif nums1[i] == nums2[j]:
output_stack.append(nums2[j+1])
else:
output_stack.append(-1)
return(print(output_stack))
nextGreaterElement([2,4],[1,2,3,4])
上面的代码返回了错误的输出 [-1,3,-1,-1],我知道为什么——这是因为我用 j 遍历了所有 nums2,但这是我知道的唯一方法做。有没有办法修改现有的代码。
我的麻烦是,如果我去掉第二个“for”循环,我很难找到一种方法来引用 nums2 中的“下一个”索引;有没有办法在不使用“for”循环的情况下做到这一点?
【问题讨论】: