下一个更大元素II-503


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

普通拼接 nums

/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function (temperatures) {
  const length = temperatures.length
  const res = Array(length).fill(0)
  const stack = [0]
  for (let i = 0; i < length; i++) {
    if (temperatures[i] <= temperatures[stack[stack.length - 1]]) {
      stack.push(i)
    } else {
      while (
        stack.length &&
        temperatures[i] > temperatures[stack[stack.length - 1]]
      ) {
        const resIndex = stack.pop()
        res[resIndex] = i - resIndex
      }
      stack.push(i)
    }
  }
  return res
}

不扩充 nums,模拟遍历

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var nextGreaterElements = function (nums) {
  const len = nums.length
  const res = Array(len).fill(-1)
  const stack = []
  for (let i = 0; i < len * 2 - 1; i++) {
    while (stack.length && nums[i % len] > nums[stack[stack.length - 1]]) {
      const curIndex = stack.pop()
      res[curIndex] = nums[i % len]
    }
    stack.push(i % len)
  }
  return res
}

const res = [1, 2, 1]
nextGreaterElements(res)

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