Menu
CoddyTech

Stock Span Problem

ふつう単調スタックpython iconjava iconcpp iconc iconjs icon+10

各日の株価の終値が与えられます。prices[i] は i 日目の価格です。i 日目のスパンとは、i 日目を含み、i 日目で終わる連続した日数のうち、価格が prices[i] 以下である日数です。

prices と同じ順序で、各日のスパンを返してください。各日のスパンは少なくとも 1 です。日数には常にその日自身が含まれるためです。

関数

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
各日の価格を順番に
戻り値integer-array
各日の範囲を、同じ順序で

制約

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • それ以前の日の価格が同じ場合もスパンに含まれます。スパンを止めるのは、価格が厳密に高い場合だけです。

例

入力
prices = [31, 27, 14, 21, 30, 18, 40]
出力
[1, 1, 1, 2, 4, 1, 7]
説明
21の3日目は14を超えてさかのぼり、27で止まります:幅は2。30の4日目は31で止まります:幅は4。40の6日目はそれ以前のすべての価格を上回り、7日間すべてをカバーします。
challenge icon

発展問題

価格が1つずつ届くようになり、価格が届くたびに各スパンを報告しなければなりません。それでも機能する方法はどれで、呼び出しの間に何を保持しますか?

コードをリセット
def stockSpan(prices):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

prices = [31, 27, 14, 21, 30, 18, 40]

期待される出力

[1, 1, 1, 2, 4, 1, 7]