The next greater element of some element x in an array is the first greater element that is to the right of x in the same array. You are given two distinct 0-indexed integer arrays nums1 and nums2, where nums1 is a subset of nums2. For each 0 <= i < nums1.length, find the index j such that nums1[i] == nums2[j] and determine the next greater element of nums2[j] in nums2. If there is no next greater element, then the answer for this query is -1. Return an array ans of length nums1.length such that ans[i] is the next greater element as described above.
Example 1
Input: nums1 = [4,1,2], nums2 = [1,3,4,2]
Output: [-1,3,-1]
Explanation: In nums2, nothing to the right of 4 is larger, so 4 gives -1. The first value larger than 1 to its right is 3. 2 is the last element, so it gives -1.
Example 2
Input: nums1 = [2,4], nums2 = [1,2,3,4]
Output: [3,-1]
Explanation: In nums2, the first value to the right of 2 that is larger is 3. Nothing to the right of 4 is larger, so 4 gives -1.
Example 3
Input: nums1 = [1], nums2 = [1]
Output: [-1]
Explanation: The array has no element to the right of 1, so the answer is -1.
Sweep nums2 with a decreasing stack. When a bigger value appears, it is the next-greater for everything smaller on the stack — record those answers in a map, then read them off for nums1.
Run checks all cases above. Submit evaluates all test cases.