Code Kata | day10 get_max_area
Q.パラメータheightは数字配列です.グラフィックで表すと、y軸の値であり、高さの値があります.
[1,8,6,2,5,4,8,3,7]を下図に示します.
そのグラフに水があるとき、水を入れることができる最大面積の値を返してください.
最大ストレージ幅(高さ ) インデックス・メソッドは、重複する値の同じインデックスを返します.
例)[1,1,1]のすべての1は、最初の1のインデックス0 を返します.
座標フォーマットを作成
例) 最大値を格納する論理行に変更
例) 元の出所から、最高のコードが空輸された...! 原理:最大横長から横長1マス(高さ1マス)が減少する.
その時にできる幅(横長*より短い高さ)を求め、最大値を格納、戻します. より少ない場合、数字で答えを出す原理を理解することが重要です.1パックあたり数時間でアイデアが浮かぶとは保証できませんが、いろいろな問題に触れるだけが答えです.
[1,8,6,2,5,4,8,3,7]を下図に示します.
そのグラフに水があるとき、水を入れることができる最大面積の値を返してください.
▼0回(失敗)
最大ストレージ幅
def get_max_area(height):
max_area=0
for y in range(1, max(height)+1):
lst = [height.index(a) for a in height if a>=y]
area = y * (lst[-1]-lst[0])
if area>=max_area:
max_area = area
return max_area
コメント例)[1,1,1]のすべての1は、最初の1のインデックス0
▼▼▼1回(pass)
def get_max_area2(height):
max_area=0
for y in range(1, max(height)+1):
lst=[a for a,b in enumerate(height)if b>=y]
area = y * (lst[-1]-lst[0])
max_area = max(max_area, area)
return max_area
変更index
->enumerate
を変更して例)
height.index(a)
->a foro a,b in enumerate(height)
例)
#수정 전
if area >= max_area:
max_area = area
#수정 후
max_area = max(max_area, area)
▼▼▼2回(pass)
def get_max_area3(height):
L, R, width, res = 0, len(height) - 1, len(height) - 1, 0
for w in range(width, 0, -1):
if height[L] < height[R]:
res, L = max(res, height[L] * w), L + 1
else:
res, R = max(res, height[R] * w), R - 1
return res
Reviewその時にできる幅(横長*より短い高さ)を求め、最大値を格納、戻します.
Reference
この問題について(Code Kata | day10 get_max_area), 我々は、より多くの情報をここで見つけました https://velog.io/@e2joo418/Code-Kata-day10-getmaxareaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol