LeetCode 11.水を最も多く入れる容器JavaScript

1576 ワード

LeetCode 11.水を最も多く入れる容器JavaScriptn個の非負の整数a1,a2,...,anが与えられ、各数は座標の1つの点(i, ai)を表す.座標内画n本の垂直線において、垂直線iの2つのエンドポイントはそれぞれ(i, ai)および(i, 0)である.x軸と共に構成された容器が最も多くの水を収容できるように、その中の2つの線を探し出す.
説明:コンテナを傾けてはいけません.nの値は少なくとも2です.
図中の垂直線は入力配列を表します.[1,8,6,2,5,4,8,3,7].この場合、容器に水を入れることができる最大値は49例:
入力:[1,8,6,2,5,4,8,3,7]出力:49
答えの参考:
/**
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function(height) {
    
    let max = 0
    for (let i = 0, j = height.length-1; i< j; ) {
         //            ,        ,      
         //          ,                 
        let minHeight = height[i] > height[j] ? height[j--] : height[i++]
        //     --  ++ ,     +1
        max = Math.max(max, (j-i+1)* minHeight )
    }
    return max

};