962. 最大宽度坡

73 阅读1分钟

给定一个整数数组 A是元组 (i, j),其中  i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i

找出 A 中的坡的最大宽度,如果不存在,返回 0 。

示例 1:

输入: [6,0,8,2,1,5]
输出: 4
解释:
最大宽度的坡为 (i, j) = (1, 5): A[1] = 0A[5] = 5.

示例 2:

输入: [9,8,1,0,1,9,4,0,4,1]
输出: 7
解释:
最大宽度的坡为 (i, j) = (2, 9): A[2] = 1A[9] = 1.

题解 :

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxWidthRamp = function (nums) {
    const stack = []
    let ans = 0
    // 单调递减stack内塞入递减下标
    for (let i = 0; i < nums.length; i++) {
        if (!stack.length || nums[stack[stack.length - 1]] > nums[i]) {
            stack.push(i)
        }
    }
    // 从后向前遍历找出最大宽度
    // 满足元祖i < j 且A[i] <= A[j]
    for (let j = nums.length - 1; j >= 0; j--) {
        while (stack.length && nums[stack[stack.length - 1]] <= nums[j]) {
            ans = Math.max(ans, j - stack.pop())
        }
    }
    return ans
};

来源:力扣(LeetCode)

链接:leetcode.cn/problems/ma…

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。