[プログラマー]LEVEL 2株価


株価問題

質問する


秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.

せいげんじょうけん


価格はそれぞれ1以上10000以下の自然数です.
価格の長さは2以上100000以下です.

I/O例


prices [1, 2, 3, 2, 3]
return [4, 3, 1, 1, 0]

1秒の1はずっと値下げしていません。 2秒の2ずっと値下げしていません。 3秒ポイントの3は1秒後に値下げされます。そのため、価格は1秒以内に下がっていない。 4秒時の2は1秒以内に値下げされませんでした。 5秒時の3は0秒以内に値下げされませんでした。

def solution(prices): length = len(prices) answer = [0] * length stack = [] for curr in range(length): while stack and prices[stack[-1]] > prices[curr]: prev = stack.pop() answer[prev] = curr - prev stack.append(curr) while stack: prev = stack.pop() answer[prev] = (length -1) - prev return answer