質問:配列が与えられた場合、各数値は幅1の柱の高さを表し、雨が降った後、このように配置された柱が受け取ることができる雨水量を計算します。
def trap(arrys):
res = 0
l,r = 0,len(arrys)-1
max_left,max_right = 0,0
while l<r:
max_left = max(arrys[l],max_left)
max_right = max(arrys[r],max_right)
if max_left<max_right:
res+=max_left-arrys[l]
l+=1
else:
res+=max_right-arrys[r]
r-=1
return res
注:ダブルポインターは前から後ろに移動するために使用され、左右の最大値は別々に保存する必要があります。各列に順番に貯めることができる雨水の量を計算し、合計します。