老卫带你学---leetcode刷题(739. 每日温度)

    科技2024-07-30  66

    739. 每日温度

    问题:

    请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。

    例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

    提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

    解决:

    思想:

    两种思路:

    最简单的就是我们从前往后遍历,去寻找更高温度的日子,然后减去下标,但这种时间复杂度太高采用单调栈的思想

    python代码:

    class Solution: def dailyTemperatures(self, T: List[int]) -> List[int]: n=len(T) result=[0]*n for i in range(len(T)-1): j=i+1 count=1 while(T[j]<=T[i]): count+=1 j+=1 if(j>=n): count=0 break result[i]=count return result class Solution: def dailyTemperatures(self, T: List[int]) -> List[int]: stack=[] result=[0]*len(T) for i in range(len(T)): while stack and T[i]>T[stack[-1]]: result[stack[-1]]=i-stack[-1] stack.pop() stack.append(i) return result
    Processed: 0.024, SQL: 8