一、暴力破解
/**
* @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
};