首页 > 试题广场 >

每日温度

[编程题]每日温度
  • 热度指数:2558 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
根据往后 n 天的天气预报,计算每一天需要等待几天才会出现一次更高的气温,如果往后都没有更高的气温,则用 0 补位。

例如往后三天的气温是 [1,2,3] , 则输出 [1,1,0]

数据范围: ,每天的温度会满足  0 \le dailyTemperatures[i] \le 1000 \
示例1

输入

[1,2,3]

输出

[1,1,0]
示例2

输入

[2,4,5,9,10,0,9]

输出

[1,1,1,1,0,1,0]
示例3

输入

[3,1,4]

输出

[2,1,0]
package main
import _"fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 每日温度
 * @param dailyTemperatures int整型一维数组 
 * @return int整型一维数组
*/
func temperatures( dailyTemperatures []int ) []int {
    n:=len(dailyTemperatures)
    ans:=make([]int,n)
    stk:=[]int{}
    for i,x:=range dailyTemperatures{
        for len(stk)>0&&dailyTemperatures[stk[len(stk)-1]]<x{
            ans[stk[len(stk)-1]]=i-stk[len(stk)-1]
            stk=stk[:len(stk)-1]
        }
        stk=append(stk,i)
    }
    return ans
}

发表于 2023-03-08 18:51:49 回复(0)