ethan

ethan

新知,热爱生活,码农,读书
twitter
email
github

LCR 11. 最も水を多く含む容器

与 x 軸を共にする容器の最大容量を保持できる 2 つの線を見つけるために、長さ n の整数配列 height が与えられます。各 i 番目の線の 2 つの端点は (i, 0) と (i, height [i]) です。容器には傾けることはできません。
image.png
例 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
}
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。