Leetcode739. 每日溫度

  • 題目要求:

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
相關文章
相關標籤/搜索