Menu
CoddyTech

Next Greater Element I

给你两个由互不相同的整数构成的数组 nums1 和 nums2,并且 nums1 中的每个值也都出现在 nums2 中。值 x 的下一个更大元素,是 nums2 中 x 右侧第一个大于 x 的值;如果不存在这样的值,则为 -1。

返回一个数组,按 nums1 中各值的顺序,存放它们各自的下一个更大元素。

函数

nextGreaterElement(nums1: integer-array, nums2: integer-array) → integer-array
nums1integer-array
要回答的值,它们全部都在 nums2 中
nums2integer-array
你在其中查找每个值右侧元素的数组
返回值integer-array
按 nums1 中的顺序,找出每个值的下一个更大元素;如果没有,则为 -1

约束条件

  • 1 ≤ nums1.length ≤ nums2.length ≤ 104
  • 0 ≤ nums1[i], nums2[i] ≤ 104
  • nums1 中的所有值都互不相同,nums2 中的所有值也都互不相同。
  • nums1 中的每个值都出现在 nums2 中。

示例

输入
nums1 = [3, 8, 1]nums2 = [1, 6, 3, 8, 2]
输出
[8, -1, 6]
解释
nums2 中的 3 后面是 8 和 2,8 是第一个更大的数。8 后面只有 2,所以 8 对应的结果是 -1。1 后面紧接着是 6,它已经更大了。
challenge icon

进阶

对于 nums2 中的每个位置,你能否只遍历一次,并返回其下一个更大元素在右侧相隔多少步?

重置代码
def nextGreaterElement(nums1, nums2):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums1 = [3, 8, 1]
nums2 = [1, 6, 3, 8, 2]

预期输出

[8, -1, 6]