記事のディレクトリ:
- タイトル
- スクリプトとノート
- スクリプトロジック
- 2つのスクリプトとノート
- スクリプトの2つのロジック
トピック:
所与の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
そして、スクリプト注: [タイムアウトが、スクリプトは、この要件を達成することです]
#コーディング:GBK のList1 = [2,3,4,5,18,17,6は]#リストが定義 MAX1 = 0#がゼロの変数値を定義 N1。ため= N1 1#定義された断片を long1 = (LEN要素数のリスト1)#取得リスト のための I におけるレンジ(long1):リストの要素の数を循環さ列の#数 LIST2 = のList1 [N1:]サポートされた断片の#リスト、ループの意志増分とN1 、N2インクリメントするループのよう#1 = N2定義された変数は、要素間のリストの長さを介して取得する ための J でLIST2:#断片化リスト通過後 IFのList1 [I]が> = #解析:Jを要素の元のリストと最小横断スライス要素通過後の カールをJ * = 二つの要素の長さを乗じN2#最小値 他: カール = List1を[I] * N2#前掲 IF MAX1 < カール:#変数は、製品が記録された最大値よりも大きいと判断 MAX1 = カール#それが超えた場合、その製品付与最大変数 N2 + 1 = N1 + = 1 プリント(MAX1)
スクリプトロジック:
- ほとんどの水コンテナは、リスト内にあることが必要に二つの要素
- 二つの要素のリスト変数の組み合わせ、それらは、必要量の水を保持することができ、そして、最大値と比較し、目標値を達成することができます
そして、2つのスクリプトは、注意してください: [もし] 140msので
クラスソリューション: DEF maxArea(セルフ、高さ:リスト[INT]) - > INT:の形式で入出力所与#タイトル I、J、MAX1、long1 = 0、LEN(高さ) - 1,0、lenの(高さ)--1#変数に割り当てられている 一方、 I < 循環へ#条件:J がiF高さ[I] <= 高さ[J]:#解析リストサイズの値に2つの要素 のカール =高さ[I] * long1位テイク小さな値との2つの要素間の幅を掛けた I最小値が残っている場合は+ =#1、Iのプラス1。。 他: カール =高さ[J] * long1リスト要素#最小値が正しければ、製品需要の J- = 1 #jのを差し引い1。 IFカール> MAX1:最大値が#について決定される比較 MAX1 = カール long1 - #1 =長さマイナス。 リターン端(MAX1)#サイクル、最大リターン変数を記録します
スクリプトの2つのロジック:
- このスクリプトの最も重要なロジックは、状況が出雑草にリストの要素[接続することができるの最大の長さを乗じた最小値は、最小の要素を除去することができる]できるか下にあります
- 小さな値の使用は、可変の長さを乗じて、最大値の積を記録と比較される置換が最大値よりも大きい場合に、両端に同期素子の大きさの値を比較します
- 各比較が完了した後、長さが1減算されます
- 左または右のサイクルの終わりまで、一端を移動するすべての要素が横断されている;各比較が終了した後、比較要素は、変更、右または左に移動する必要があります