ない論理プログラミングとアルゴリズムの問題では、より多くの謎のような難易度の嘘
左右2辺の中央に移動ポインタ、最大の両方を維持したまま
クラスソリューション{ 公共 int型トラップ(INT []高さ){ 場合(高さ== NULL || height.length <3 ){ 戻り 0; // 不可能このような状況では水を含むように } int型 = 0左; //は左開始ポインタ INT右= height.length - 1。//は、右ポインタ開始 INTを leftMax =高さ[左]。// 左にバインド int型 rightMax =高さ[右]。// 右にバインドされ int型の RES = 0 ; 一方(左< 右){ 場合(高さ[左] <= 高さ[右]){ 場合(高さ[左]> leftMax){ leftMax =高さ[左++ ]。 } 他{ RES + = leftMax -高さは、[左++ ]。 } } 他{ 場合(高さ[右]> rightMax){ rightMax =高さ[right-- ]。 } 他{ RES+ = rightMax -高さ[right-- ]。 } } } 戻りRES。 } }
時間:O(N)
スペース:O(1)