Folioevanzhou.org
← 返回 Kata
EasyLeetCode2026-07-07原题 ↗

054Next Greater Element I

arrayhash-tablestackmonotonic-stack

Problem

给定两个整数数组 nums1 和 nums2。

nums1 中的每个元素都出现在 nums2 中,并且两个数组中的元素都互不相同。

对 nums1 中的每个元素 x,需要在 nums2 中找到 x 的位置,然后继续向右看,找到第一个比 x 更大的元素。

如果右边存在这样的元素,就把它作为 x 的答案。

如果右边不存在比 x 更大的元素,就把 -1 作为 x 的答案。

请按 nums1 的顺序,返回每个元素对应的答案数组。

例如:

nums1 = [4, 1, 2]
nums2 = [1, 3, 4, 2]

在 nums2 中:

  • 4 的右边只有 2,没有更大的元素,所以答案是 -1
  • 1 的右边第一个更大的元素是 3
  • 2 的右边没有元素,所以答案是 -1

所以返回:

[-1, 3, -1]

Examples

示例 1

Input:  nums1 = [4, 1, 2], nums2 = [1, 3, 4, 2]
Output: [-1, 3, -1]

解释:4 和 2 在 nums2 右侧都没有更大的元素;1 右侧第一个更大的元素是 3。

示例 2

Input:  nums1 = [2, 4], nums2 = [1, 2, 3, 4]
Output: [3, -1]

解释:2 在 nums2 右侧第一个更大的元素是 3;4 右侧没有更大的元素。

示例 3

Input:  nums1 = [1, 3, 5], nums2 = [6, 5, 4, 3, 2, 1, 7]
Output: [7, 7, 7]

解释:1、3 和 5 在 nums2 右侧第一个更大的元素都是 7。

Constraints

  • 1≤1 \leq nums1.length ≤\leq nums2.length ≤1000\leq 1000
  • 0≤0 \leq nums1[i], nums2[i] ≤104\leq 10^4
  • nums1 和 nums2 中的所有整数互不相同
  • nums1 中的所有整数都出现在 nums2 中

最初怎么想、怎样补完整、最后如何落成。