CK 025 | Week2 - Day5



質問する


パラメータheightは数値からなる配列です.グラフィックで表すと、y軸の値であり、高さの値があります.
[1,8,6,2,5,4,8,3,7]を下図に示します.

そのグラフに水があるとき、水を入れることができる最大面積の値を返してください.

せいげんじょうけん


配列の長さは2より大きい.

私が書いたコード

def get_max_area(height): 
  left = 0
  right = len(height)-1
  area = 0

  while left < right :
    area = max(area, min(height[left], height[right])*(right-left))
    
    if height[right] > height[left] :
      left += 1
    else :
      right -=1
  
  return area
私たちに必要なのは水を収容できる最大幅です.
両端から高さを比較します.高2低は高、底辺は오른쪽 인덱스 번호-왼쪽 인덱스 번호上の写真を例にとると、
高さは左側より高いが、右側は左側より低い.右の高さを超えるまで水を入れられないからです.
左右中최솟값水を収容できる高さを指定します.
右と左が交差しないまで最大幅を求めます.
このとき、右側の高さが左側の高さより大きい場合は左側のインデックス番号を増やし、左側が大きい場合は右側のインデックス番号を減らします.