トピック:
所与のn非負整数A1、A2、...、点(I、AI)各座標の数を表します。垂直座標内の動画n行、私は2つのエンドポイントは、(i、AI)及び(I、0)は垂直線です。x軸の構成は、水を収容できるように一緒に容器を有する2本のラインを見つけます。
注意:あなたは、コンテナを傾けることができない、とnの値は、少なくとも2です。
図の縦線[1,8,6,2,5,4,8,3,7]入力配列を表します。この場合、水を保持することができる最大コンテナ49の(青色で示します)。
例:
入力:[1,8,6,2,5,4,8,3,7]
出力:49
/ * * * @param {数[]}高さ * @return {数} * / 関数minは(B){ 返す <= bは?A:B; } VARの maxArea = 関数(高さ){ TEMPせ = 0。// 最大容量 のために(LET I = 0; I <height.length; iは++ ){ ため(LET J = I + 1、J <height.length; J ++ ){ 場合(温度<(JI)* 分(高さ[ i]は、高さ[J])){ TEMP =(JI)* 分(高さ[I]、高さ[J])。 } } } 戻りTEMP。 }。
実装:最大値を選択するループ検知して主に実装二つのポインタ。(暴力)
/ * * * @param {数[]}高さ * @return {数} * / 関数minは(B){ 返す <= bは?A:B; } VARの maxArea = 関数(高さ){ 左せ = 0 。 聞かせて右 = height.length-1 ; 一時ましょう = 0 ; 一方(左< 右){ 場合(温度<(左右)* 分(高さ[左]、高さ[右])){ TEMP =(左右)* 分(高さ[左]、高さ[右] ); } もし(高さ[左] <= 高さ[右]){ 左 ++ ; } 他{ 右 - 。 } } 戻りTEMP。 }。
実現、領域は常に短いピースの前記長さの制限の対象となる2つのセグメント間に形成されます。また、遠い2つのライン・セグメントは、大きな面積を得ました。内側両側から横断するように一度に行うことができます。(ダブルポインタ)
出典:ボタン(LeetCode)滞在
//leetcode-cn.com/problems/container-with-most-waterます。https:リンクを
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。