739. 每日温度
每日温度
题目描述:
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。
示例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
示例 2:
输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]
示例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]
提示:
1 <= temperatures.length <= 105
30 <= temperatures[i] <= 100
思路:
从后往前动态规划,从后一个开始找第一个比他大的,每次跳后一个数的第一个比他大的数的跳数。
代码:
func dailyTemperatures(temperatures []int) []int {
j := 0
num := make([]int, len(temperatures))
num[len(temperatures)-1] = 0
for i:= len(temperatures)-2;i>=0;i--{
if temperatures[i] < temperatures[i+1]{
num[i] = 1
}else{
j = i+1
for j < len(temperatures) && num[j] != 0{
j = num[j]+j
if temperatures[j] > temperatures[i]{
num[i] = j-i
break
}
}
}
}
return num
}
代码效率:
执行用时:128 ms, 在所有 Go 提交中击败了82.30%的用户
内存消耗:10 MB, 在所有 Go 提交中击败了6.86%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!