前提・実現したいこと
現在Python3系を使って競技プログラミングで累積和について勉強しております。
累積和の問題例として、このような問題があるのですが、
こちらのサイトではこの問題の回答について
N = 3 a = [1,4,3] #iより左側の場所での最大値、左側の場所での最大値を格納する配列を用意 left_max = [0]*N right_max = [0]*N for i in range(1,N): left_max[i] = max(left_max[i-1],a[i-1]) #[0, 1, 4] right_max[N-i-1] = max(right_max[N-i],a[N-i]) #[4, 3, 0] #2配列の要素ごとで最大値を通れば解 for j in range(N): print(max(left_max[j], right_max[j]))
このようなソースコードが提示されています。
そこでなのですが、このソースコードの
left_max = [0]*N right_max = [0]*N
の部分と
left_max[i] = max(left_max[i-1],a[i-1]) #[0, 1, 4] right_max[N-i-1] = max(right_max[N-i],a[N-i])
この部分で何を行なっているのかわからず、調べ方もわかりません。。。
つまり、一般にmax = [0]*n
としたときにどのようなことを行なっているのか、さらにmax[i]
としたときどのようなことを行なっているのかがわからないため、教えていただきたいです。
おそらく調べれば出てくることではあるのですが、如何せん無知で調べ方もわからずという状態です。。。申し訳ございません。
程度の低い質問でしたら申し訳ございません。
また、質問に必要な情報等に不足があれば、お手数ですがご指摘いただければ、追記いたします。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー