#1446. 【系列题】单调栈(二)下一个更大元素 I

【系列题】单调栈(二)下一个更大元素 I

说明

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1[] 和 nums2[] ,下标从 0 开始计数,长度分别为 n 和 m,其中nums1 是 nums2 的子集。

对于每个 0 <= i < n ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

输出一行长度为 n 的数组 ans[] 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

输入格式

第一行为两个整数 n 和 m

第二行为 n 个整数 nums1[i]

第三行为 m 个整数 nums2[i]

输出格式

一行 n 个整数

样例

3 4
4 1 2
1 3 4 2
-1 3 -1

提示

样例说明:

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

输出:[-1,3,-1]

解释:nums1 中每个值的下一个更大元素如下所述: 

  • 4:nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。 
  • 1:nums2 = [1,3,4,2]。下一个更大元素是 3 。 
  • 2:nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。

数据范围:

  • 1 <= n <= m <= 1000
  • 0 <= nums1[i], nums2[i] <= 104
  • nums1和nums2中所有整数 互不相同
  • nums1 中的所有整数同样出现在 nums2 中