下一个更大元素I-496


力扣(LeetCode) 链接:https://leetcode.cn/problems/next-greater-element-i/

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function (nums1, nums2) {
  const len1 = nums1.length
  const len2 = nums2.length
  const res = Array(len1).fill(-1)
  const stack = []
  const map = new Map()
  for (let i = 0; i < len2; i++) {
    if (stack.length === 0 || nums2[i] <= nums2[stack[stack.length - 1]]) {
      stack.push(i)
    } else {
      while (stack.length && nums2[i] > nums2[stack[stack.length - 1]]) {
        const curIndex = stack.pop()
        map.set(nums2[curIndex], nums2[i])
      }
      stack.push(i)
    }
  }
  for (let i = 0; i < nums1.length; i++) {
    res[i] = map.get(nums1[i]) || -1
  }
  return res
}

const arr1 = [4, 1, 2]
const arr2 = [1, 3, 4, 2]
nextGreaterElement(arr1, arr2)

文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录