[Leetcode] 11. Container With Most Water


https://leetcode.com/problems/container-with-most-water/
入力:整数配列height
出力:i,jインデックスの最大値は(j-i)*min(height[i],height[j])

上記の例のheight配列は[1,8,6,2,5,4,8,3,7]である.棒の間に水をかけるとグラフに書いてある場合は、最も水をかけることができる区間を見つければいいです.
解決策は,i=0,j=height-1インデックスで最大値を求めることである.x軸の距離が最も広いため、狭い区間により広い水量を加えるためには、y軸の高さを高くしなければならない.i,jの区間を縮小し,式を計算し,最大値を更新すると,答えが見つかる.
コード#コード#
class Solution {
    public int maxArea(int[] height) {
        int i = 0;
        int j = height.length - 1;
        int result = 0;

        while (i < j) {
            int temp = (j - i) * Math.min(height[i], height[j]);
            if (result < temp)
                result = temp;

            if (height[i] < height[j]) {
                i++;
            } else {
                j--;
            }
        }

        return result;
    }
}