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)は72を2日間待ちます。3日目(70)は4日目の同じ70を飛ばし、75を2日間待ちます。75または68の後にはそれより暖かい日がないため、どちらも0になります。
challenge icon

発展問題

気温は30から100までの71種類の値しか取りません。気温をインデックスとするテーブルを使って、右から左へ一度走査するだけで毎日の答えを求めるにはどうすればよいでしょうか。また、そのコストはいくらでしょうか?

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

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

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