496. Next Greater Element I

26 年 2 月 27 日 星期五
224 字
2 分钟
Screenshot 2026-02-27 at 11.22.13 pm

Set和Map都有has方法

JS 中 Set.prototype.has() 和 Map.prototype.has() 的核心区别在于判断的目标不同,具体差异如下:

核心区别

Set.has(value) 集合中是否存在该值 入参为要检测的值 Map.has(key) 映射中是否存在该键 入参为要检测的键,值不参与判断

js
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function (nums1, nums2) {
  // 栈中记录还没算出「下一个更大元素」的那些数。
  const map = new Map()
  const st = []
  const ans = Array(nums1.length).fill(-1)
  nums1.forEach((x, i) => map.set(x, i))
  for (let i = 0; i < nums2.length; i++) {
    const x = nums2[i]
    while (st.length && x > st[st.length - 1]) {
      // x > 栈顶元素 则栈内元素找到了「下一个更大元素」
      // x 是栈顶的下一个更大元素
      // 既然栈顶已经算出答案,弹出
      ans[map.get(st.pop())] = x // 记录答案
    }
    if (map.has(x)) {
      st.push(x)
    }
  }
  return ans
}

文章标题:496. Next Greater Element I

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/496_next_greater_element_i[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。