056 · Daily Temperatures

algorithm
Published

July 9, 2026

Problem

给定一个整数数组 temperatures,其中 temperatures[i] 表示第 i 天的气温。

对每一天,需要计算还要等待多少天,才会出现一个更暖和的日子。

如果某一天之后再也没有更暖和的日子,那么这一天的答案是 0

请返回一个数组 answer,其中 answer[i] 是第 i 天需要等待的天数。

例如:

temperatures = [73, 74, 75, 71, 69, 72, 76, 73]

对每一天来看:

  • 第 0 天是 73,第 1 天 74 更暖和,所以等待 1
  • 第 1 天是 74,第 2 天 75 更暖和,所以等待 1
  • 第 2 天是 75,第 6 天 76 才更暖和,所以等待 4
  • 第 3 天是 71,第 5 天 72 更暖和,所以等待 2
  • 第 4 天是 69,第 5 天 72 更暖和,所以等待 1
  • 第 5 天是 72,第 6 天 76 更暖和,所以等待 1
  • 第 6 天是 76,后面没有更暖和的日子,所以答案是 0
  • 第 7 天是 73,后面没有日子,所以答案是 0

所以返回:

[1, 1, 4, 2, 1, 1, 0, 0]

Examples

示例 1

Input:  temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
Output: [1, 1, 4, 2, 1, 1, 0, 0]

解释:每个位置的数字表示从当天开始,需要等几天才会遇到更高的气温。

示例 2

Input:  temperatures = [30, 40, 50, 60]
Output: [1, 1, 1, 0]

解释:前三天的下一天都更暖和;最后一天之后没有其他日子,所以答案是 0

示例 3

Input:  temperatures = [30, 60, 90]
Output: [1, 1, 0]

解释:第 0 天等到第 1 天变暖,第 1 天等到第 2 天变暖,第 2 天之后没有更暖和的日子。

Constraints

  • \(1 \leq\) temperatures.length \(\leq 10^5\)
  • \(30 \leq\) temperatures[i] \(\leq 100\)