739. 每日溫度(Python)

難度:★★★☆☆
類型:數(shù)組
方法:棧

力扣鏈接請移步本題傳送門
更多力扣中等題的解決方案請移步力扣中等題目錄

請根據(jù)每日 氣溫 列表,重新生成一個列表。對應(yīng)位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數(shù)。如果氣溫在這之后都不會升高,請在該位置用 0 來代替。

例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應(yīng)該是 [1, 1, 4, 2, 1, 1, 0, 0]。

提示:氣溫 列表長度的范圍是 [1, 30000]。每個氣溫的值的均為華氏度,都是在 [30, 100] 范圍內(nèi)的整數(shù)。

解答

這道題與行星碰撞類似,在一維數(shù)組中存在結(jié)果與前后之間的關(guān)系影響時,可以用棧來做。

定義一個空棧stack(用來存儲下標(biāo))和長度為T的長度的結(jié)果數(shù)組result(初始化為零),從前到后遍歷所溫度列表T中所有溫度,每當(dāng)遇到新的溫度高于棧頂元素時,執(zhí)行出棧操作,直到棧頂元素不再低于新加入的溫度。再將當(dāng)前的元素入棧。

在出棧的過程中,需要及時的將出棧元素與當(dāng)前元素的下標(biāo)差填充在結(jié)果列表中對應(yīng)的位置。

class Solution:
    def dailyTemperatures(self, T):
        result = [0] * len(T)
        stack = []
        for i, temperature in enumerate(T):
            while stack and temperature > T[stack[-1]]:
                prev_index = stack.pop()
                result[prev_index] = i - prev_index
            stack.append(i)
        return result

如有疑問或建議,歡迎評論區(qū)留言~

有關(guān)更多力扣中等題的python解決方案,請移步力扣中等題解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 739. 每日溫度 題目來源:力扣(LeetCode)https://leetcode-cn.com/proble...
    大夢三千秋閱讀 536評論 0 1
  • 題目: 根據(jù)每日 氣溫 列表,請重新生成一個列表,對應(yīng)位置的輸入是你需要再等待多久溫度才會升高超過該日的天數(shù)。如果...
    禾木清清閱讀 275評論 0 0
  • Leetcode 739 每日溫度題解 [toc] 題目 請根據(jù)每日 氣溫 列表,重新生成一個列表。對應(yīng)位置的輸出...
    petrichor_c9f0閱讀 674評論 0 0
  • 題目描述 根據(jù)每日 氣溫 列表,請重新生成一個列表,對應(yīng)位置的輸入是你需要再等待多久溫度才會升高的天數(shù)。如果之后都...
    莫小鵬閱讀 533評論 0 0
  • 根據(jù)每日 氣溫 列表,請重新生成一個列表,對應(yīng)位置的輸出是需要再等待多久溫度才會升高超過該日的天數(shù)。如果之后都不會...
    放下梧菲閱讀 223評論 0 0

友情鏈接更多精彩內(nèi)容