给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线

动态规划

  var maxArea = function (height) {
        var h = Math.min(height[0], height[1])
        let area = h * 1
        for (let i = 0; i < height.length; i++) {
            let end = i + 1
            while (end < height.length) {
                area = Math.max((end - i) * (Math.min(height[i], height[end])), area)
                end++
            }
        }
        return area
    };
        var height = [1, 8, 6, 2, 5, 4, 8, 3, 7]
     console.log(maxArea(height))

双指针

    var maxArea = function (height) {
        let l = 0
        let r = height.length - 1;
        let area = 0;
        while (l < r) {
            area = Math.max(Math.min(height[l], height[r]) * (r - l), area);
            if (height[l] <= height[r]) {
                ++l;
            } else {
                --r;
            }
        }
        return area;
    };
    var height = [1, 8, 6, 2, 5, 4, 8, 3, 7]
     console.log(maxArea(height))
原文地址:https://www.cnblogs.com/cupid10/p/15617581.html