一、暴力破解
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */var nextGreaterElement = function(nums1, nums2) { const m1 = nums1.length, m2 = nums2.length const resArr = Array(m1).fill(-1) for(let i = 0; i < m1; i++) { const cur = nums1[i] const index = nums2.findIndex((num) => num === cur) for(let j = index + 1; j < m2; j++) { if(nums2[j] > cur) { resArr[i] = nums2[j] break } } } return resArr};
二、栈+hash表
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */var nextGreaterElement = function (nums1, nums2) { const m1 = nums1.length, m2 = nums2.length const stack = [] const hashmap = {} for (let i = 0; i < m2; i++) { while(stack.length && nums2[i] > stack[stack.length - 1]) { hashmap[stack.pop()] = nums2[i] } stack.push(nums2[i]) } stack.length = 0; for (let i = 0; i < m1; i++) { stack.push(hashmap[nums1[i]] || -1) } return stack};