当前位置: 首页 > 后端技术 > Python

LeetCode739.每日温度-蟒蛇

时间:2023-03-26 00:21:16 Python

739。每日温度题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/daily-temperatures题目根据每日温度列表,请重新生成一个列表,对应位置的输出是等待多长时间使温度上升到那天之后。如果在那之后它不会上升,请在该位置使用0代替。例如,给定一个列表temperatures=[73,74,75,71,69,72,76,73],您的输出应该是[1,1,4,2,1,1,0,0]。提示:温度列表长度范围为[1,30000]。每个温度的值以华氏度为单位,并且是[30,100]范围内的整数。解题思路:Monotonicstack首先明确题意。题目中的意思是在每个元素的右边找到第一个比它大的元素,并计算两者之间的距离。那么,如果使用暴力解法,代码大致如下:defdailyTemperatures(self,T:List[int])->List[int]:length=len(T)ans=[0]*lengthforiinrange(length):forjinrange(i+1,length):ifT[i]List[int]:length=len(T)ans=[0]*length#这里是借助list#元素实现的列表末尾是栈顶元素stack=[]#开始从右向左遍历foriinrange(length-1,-1,-1):#如果当前元素大于等于到栈顶元素,将其弹出#直到当前元素小于栈顶元素whilestackandT[i]>=T[stack[-1]]:stack.pop()#At这次的栈顶元素其实就是当前元素右边第一个较大的元素,先计算距离,如果stack且T[i]

猜你喜欢