Menu
CoddyTech

Container With Most Water

非負整数のリスト height が与えられます。線 i は、位置 i に立つ高さ height[i] の垂直な壁です。任意の2本の線は地面とともに容器を形成し、その容器が保持できる水の量は、短いほうの線の高さに2本の線の間の距離を掛けた値です。ほかの線は邪魔になりません。1組の線で保持できる水の最大量を返してください。

関数

maxArea(height: integer-array) → integer
heightinteger-array
位置 0、1、2 などにある行の高さ
戻り値integer
2本の線に入れられる水の最大量

制約

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • 答えは最大でも 108 なので、32 ビット整数に収まります。

例

入力
height = [3, 7, 2, 5, 4, 7, 3, 6]
出力
36
説明
位置1と7の線の高さは7と6で、間隔は6なので、6 × 6 = 36を保持します。最も高い2本の線、位置1と5の7の線が保持できるのは7 × 4 = 28だけで、外側のペアは3 × 7 = 21を保持します。

lock icon提出時に隠しテスト+15件

challenge icon

発展問題

ここでは、選んだ2本の線の間にある線は無視されます。すべての線が代わりに塊状の棒だったとしたら、それらすべての間にどれだけの水がたまるでしょうか?これも O(n) で計算できますか?

コードをリセット
def maxArea(height):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

height = [3, 7, 2, 5, 4, 7, 3, 6]

期待値

36