Menu
CoddyTech

Container With Most Water

非負整数のリスト height が与えられます。i 番目の線は、高さ height[i] で位置 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しか保持しません。
challenge icon

発展問題

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

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

テスト #1

テスト #2

引数

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

期待される出力

36