与 x 軸を共にする容器の最大容量を保持できる 2 つの線を見つけるために、長さ n の整数配列 height が与えられます。各 i 番目の線の 2 つの端点は (i, 0) と (i, height [i]) です。容器には傾けることはできません。
例 1:
入力:[1,8,6,2,5,4,8,3,7]
出力:49
説明:垂直線は入力配列 [1,8,6,2,5,4,8,3,7] を表しています。この場合、容器が保持できる水の最大値は 49 です。
例 2:
入力:height = [1,1]
出力:1
ヒント:
n == height.length
2 <= n <= 105
0 <= height[i] <= 104
解法 1: 双指针法
func maxArea(height []int) int {
left, right := 0,len(height)-1 // 左右のポインタを定義し、中央に向かって移動するように設定
water_level := 0
for left < right { // 中央に向かって移動する終了条件
w := right -left;
h := min(height[left], height[right])
water_level = max(water_level, w*h)
if height[left]<height[right] { // 左右のポインタの移動条件
left++
}else {
right--
}
}
return water_level
}