#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 中