Python编程题21--每日温度

2021-10-24  本文已影响0人  wintests

题目

给定一个非空整数列表 temperatures ,该列表依次记录了每日温度,请计算在每一天需要等几天才会有更高的温度,并将结果通过列表返回。

说明:如果气温在这之后都不会升高,请在该位置用 0 来代替。

例如:

给定一个列表:[73, 74, 75, 71, 69, 72, 76, 73],返回结果:[1, 1, 4, 2, 1, 1, 0, 0]

给定一个列表:[30, 25, 35, 32],返回结果:[2, 1, 0, 0]

解释:

[30, 25, 35, 32] 表示该列表记录了4日温度,第 1 日为30,第 2 日为25,第 3 日为35,第 4 日为32 ;

[2, 1, 0, 0] 表示该列表每日需要等几天才会有更高的温度,第 1 日需要等 2 天后温度升高到35,第 2 日需要等 1 天后温度升高到35,第 3、4 日后温度都不会升高,所以都是 0

实现思路1

代码实现

def dailyTemperatures(temperatures):
    res = []
    for i in range(len(temperatures)):
        count = 0
        for j in range(i + 1, len(temperatures)):
            if temperatures[j] > temperatures[i]:
                count += j - i
                res.append(count)
                break
        else:  # for ... else 只有在 for 中全部遍历完,且for中没有因 break 提前跳出循环时才执行else
            res.append(0)
    return res

实现思路2

代码实现

def dailyTemperatures(temperatures):
    res = [0] * len(temperatures)
    stack = []
    for i, cur in enumerate(temperatures):
        while stack and cur > temperatures[stack[-1]]: 
            index = stack.pop()
            res[index] = i - index
        stack.append(i)
    return res

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇下一篇

猜你喜欢

热点阅读