#11コンテナとほとんど水
問題の説明
与えられたnは、座標点を表す非負整数A1、A2、...、(iは、AI)。N個の縦線は、iが(I、AI)及び(I、0)にあるラインの2つのエンドポイントことが描かれています。一緒に、x軸と容器がほとんど水を含むように、容器を形成する2つの行を見つけます。
注:あなたは、コンテナを傾け、nは少なくとも2でない場合があります。
上記垂直線は、アレイ[1,8,6,2,5,4,8,3,7]で表されます。この場合、容器が含むことのできる水(青色部分)の最大面積は49です。
例:
入力:[1,8,6,2,5,4,8,3,7]
出力:49
出典:滞在ボタン(LeetCode)
:リンクhttps://leetcode-cn.com/problems/container-with-most-water
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。
問題解決のためのアイデア
二つのポインタを使用する方法は、ポインタが設けられている左端の\(I \) 、一番右のセットポインタ\(J \) 。2つのミートポインタまで、各時間小さな値の両方の動き、。
説明:
ポインタの場合は\(i、jは\)私たちはと呼ばれるコンテナの容量に囲まれた((I、J)\)\、その後、初期状態である((1,7)\)\。
なぜ我々はそれのポインタ短いを移動することができますか?私達は私達の状態で使用すると、ポインタは無視動くたびに見ることができます:最初の移動のために、私たちは計算しないであろう、(、(1,8)、(1,6)、...、(1,8)、(\ 1 3)\) 。このような状態は無視されるため、ベースの長さよりも小さくなければならない(\(1,7))\、容器の最大高さのみであってもよい\(1 \)これらの状態の体積よりも無視しなければならないことを示すこと、(\ (1,7)\) )小(基線長が小さくなる、または同じ超可変小矩形領域が小さくなります。
これにより、アルゴリズムの正しさを証明し、その結果、計算量を最小化する場合に得られます。
時間の複雑さ:\(O(N)\) 、連続的にトラバース
宇宙複雑:\(O(1)\) 、あなただけの最大音量保存することができます
コードの説明
比較的単純ではなく、解釈