Skip to content

📚 2.下一个更大的元素

💻 代码实现

typescript
// @ts-nocheck
/**
 * @url https://leetcode.cn/problems/next-greater-element-i/description/
 */

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */

// !notice: 注意题目描述
var nextGreaterElement = function (nums1, nums2) {
  const stack = [];
  const map = new Map(); // key为值,value为下标
  const res = new Array(nums1.length).fill(-1);
  for (let i = 0; i < nums1.length; i++) {
    map.set(nums1[i], i);
  }

  for (let i = 0; i < nums2.length; i++) {
    if (!stack.length) {
      stack.push(i);
    } else {
      while (stack.length && nums2[i] > nums2[stack[stack.length - 1]]) {
        if (map.has(nums2[stack[stack.length - 1]])) {
          const idx = map.get(nums2[stack[stack.length - 1]]);
          res[idx] = nums2[i];
        }
        stack.pop();
      }
      stack.push(i);
    }
  }
  return res;
};

Released under the MIT License.