// Next Greater Element

// You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2.
// Find all the next greater numbers for nums1's elements in the corresponding places of nums2.

// The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.

// Example 1:

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

// Explanation:
//     For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
//     For number 1 in the first array, the next greater number for it in the second array is 3.
//     For number 2 in the first array, there is no next greater number for it in the second array, so output -1.

// Example 2:

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

// Explanation:
//     For number 2 in the first array, the next greater number for it in the second array is 3.
//     For number 4 in the first array, there is no next greater number for it in the second array, so output -1.


// Note:
// All elements in nums1 and nums2 are unique.
// The length of both nums1 and nums2 would not exceed 1000.

/**
 * @param {array[]} findNums
 * @param {array[]} nums
 * @return {array[]}
 */



@@ -1318,8 +1318,460 @@
 %7D%0A */%0A%0A%0A
+var nextGreaterElement = function(findNums, nums) %7B%0A    const map = %7B%7D;%0A    const stack = %5B%5D;%0A    for (let i = 0; i %3C nums.length; i += 1) %7B%0A        while (stack.length && stack%5Bstack.length - 1%5D %3C nums%5Bi%5D) %7B%0A            map%5Bstack.pop()%5D = nums%5Bi%5D;%0A        %7D%0A        stack.push(nums%5Bi%5D);%0A    %7D%0A    for (let j = 0; j %3C findNums.length; j += 1)%7B%0A        map%5BfindNums%5Bj%5D%5D ? findNums%5Bj%5D = map%5BfindNums%5Bj%5D%5D : findNums%5Bj%5D = -1;%0A    %7D%0A    return findNums;%0A%7D;%0A

add solution