• 题目要求:

image.png

  • 思路

    • 初始化一个res,用来保存返回的结果,res的长度为给定的T的数组长度,res的每个元素都为0
    • 定义一个数组stack,用来保存T数组的下标
    • 遍历给定的数组T,使用enumerate,每次把index和元素t都遍历到,嵌套while循环,当stack不为空,而且当前遍历到的温度大于stack中保存的最后一位下标所对应的温度,那么当前温度的下标减去stack中保存的最后一位下标,就是stack中保存的stack中保存的最后一位下标所对应的温度需要等待的天数,把这个天数保存到res结果中,并把stack的末尾元素pop出来,直至while循环结束。
    • while循环结束后,将当前的index,append到stack中。
    • 返回res结果集
  • 部分代码:
# 用来保存结果集
res = [0] * len(T)
# 临时的stack
tmp = []

# 遍历数组T
for index , t in enumerate(T):
    # 当 tmp不为空,也就是之前还有没有求出等待天数的温度,而且当前的温度大于之前的,没有求出结果的最后一个温度,(当前的温度大于之前最后一个没有求出结果的温度,说明当前的温度的下标减去之前温度的下标就是之前温度要等待的天数)开始while循环
    while tmp and t > T[tmp[-1]]:
        # 把求出的天数保存到结果集对应的位置
        res[tmp.pop()] = index - tmp[-1]
    # 把当前的下标保存到stack中
    tmp.append(index)
# 返回结果集
return res
            
  • 完整代码:
class Solution:
    def dailyTemperatures(self, T: List[int]) -> List[int]:
        res = [0] * len(T)
        tmp = []

        for index , t in enumerate(T):
            while tmp and t > T[tmp[-1]]:
                res[tmp.pop()] = index - tmp[-1]
            tmp.append(index)
        
        return res
            

Adrianna
1 声望2 粉丝