Menu
CoddyTech

Daily Temperatures

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

連続する日々の各日の気温が与えられます。temperatures[i] は i 日目の気温です。各日について、それより後に気温が厳密に高くなる日が来るまで、何日待つ必要があるかを数えてください。それより後に気温が高くなる日がない場合、その日の待ち日数は 0 です。

同じ長さの配列を返してください。要素 i は i 日目の待ち日数です。

関数

dailyTemperatures(temperatures: integer-array) → integer-array
temperaturesinteger-array
各日の気温を順番に
戻り値integer-array
各日について、より暖かい日までの日数。該当する日がない場合は0。

制約

  • 1 ≤ temperatures.length ≤ 104
  • 30 ≤ temperatures[i] ≤ 100
  • 「より暖かい」とは、厳密に温度が高いことを意味します。同じ気温の日が後に来ても、該当しません。

例

入力
temperatures = [71, 69, 72, 70, 70, 75, 68]
出力
[2, 1, 3, 2, 1, 0, 0]
説明
0日目は71で、最初に気温が高くなるのは2日目の72なので、2日待ちます。3日目と4日目はどちらも70です。2回目の70は気温が高くないため、3日目は5日目の75まで待ち、2日待ちます。75や68の後に気温が高くなる日はないので、どちらも0です。

lock icon提出時に隠しテスト+13件

challenge icon

発展問題

温度は30から100までの71種類の値しか取りません。温度をインデックスとするテーブルを使って、右から左への1回の走査ですべての日に答えるにはどうすればよいでしょうか。また、その走査の計算量はいくらでしょうか。

コードをリセット
def dailyTemperatures(temperatures):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

temperatures = [71, 69, 72, 70, 70, 75, 68]

期待値

[2, 1, 3, 2, 1, 0, 0]