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

力扣739,每日温度

时间:2023-03-26 14:09:04 Python

题目要求:思路初始化一个res保存返回结果,res的长度为给定的T数组长度,res的每个元素为0定义一个数组栈,用于保存T数组的下标到遍历给定的数组T,使用enumerate,每次遍历索引和元素t,嵌套while循环,当栈不为空,且当前遍历的温度大于栈中上次保存的值时,a对应的温度下标,那么当前温度的下标减去栈中最后存储的下标就是等待栈中存储的最后一个下标对应的温度的天数,将这个天数保存在res结果中,弹出栈尾元素直到while循环结束。while循环结束后,将当前索引追加到栈中。返回res结果集的部分代码:#用来保存结果集res=[0]*len(T)#临时栈tmp=[]#遍历数组Tforindex,tinenumerate(T):#当tmp不为空,即没有之前计算过等待天数的温度,且当前温度大于前一个,最后一个没有结果的温度,(当前温度大于最后一次没有计算出结果的温度,表示当前温度。下标减去上一个温度的下标是等待上一个温度的天数)开始while循环whiletmpandt>T[tmp[-1]]:#将计算出的天数保存到结果集对应位置res[tmp.pop()]=index-tmp[-1]#将当前下标保存到栈中tmp.append(index)#返回结果集returnres完整代码:class解决方案:defdailyTemperatures(self,T:List[int])->List[int]:res=[0]*len(T)tmp=[]forindex,tinenumerate(T):whiletmpandt>T[tmp[-1]]:res[tmp.pop()]=index-tmp[-1]tmp.append(index)返回res