付費限定

用 單調棧 來解 每日溫度變化 Daily Temperatures Leetcode #739 精選75題

閱讀時間約 5 分鐘

題目敘述

題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。

請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0

請以陣列的形式返回答案。


題目的原文敘述


測試範例

Example 1:

Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]

Example 2:

Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]

Example 3:

Input: temperatures = [30,60,90]
Output: [1,1,0]

約束條件

Constraints:

  • 1 <= temperatures.length <= 10^5

溫度陣列的長度介於 1 ~ 十萬。

  • 30 <= temperatures[i] <= 100

每個陣列元素值介於30~100之間。


演算法 Monotone Stack 單調棧


維護一個遞減單調棧,每次推入溫度時,把前面比較小的溫度都pop出來,並且趁機計算兩者之間的索引差值,更新前面比較冷的那幾天再過幾天才會遇到更溫暖的日子。最後推入自己當下這天的索引值。

反覆迭代更新,掃描每一天的溫度,同時維護遞減單調棧。

如果某一天無解,也就是某一天之後不會遇到更溫暖的日子,則回填0。


程式碼 Monotone Stack 單調棧

class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:

size = len(temperatures)

# waiting days of next warmer temperature
waiting_days = [ 0 for _ in range(size) ]

## monotone decreasing stack to help us to find waiting days of next warmer temperature
# first parameter is array index
# second parameter is temperature
stack = []

for cur_idx, cur_t in enumerate(temperatures):

# keep stack in decreasing order
while stack and cur_t > stack[-1][1]:

# get index and temperature of previous colder day
prev_idx, prev_t = stack.pop()

# update waiting days for previous colder day
waiting_days[prev_idx] = cur_idx - prev_idx

# add current index and current temperature into stack
stack.append( (cur_idx, cur_t) )


return waiting_days
Support the creator with action! Pay to unlock
本篇內容共 2006 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整You currently cannot view the following content, possibly because you are not logged in or do not have permission to view the room.
81會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
題目敘述 題目會給我們泰伯納西數列的一般項和初始條件,要求我們實現找出第n項的function。 def tribonacci(self, n: int): 泰伯納西數列的一般項: Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. 泰伯納西數列的初始條件: T0 = 0,
題目敘述 題目會給我們一個輸入整數陣列arr,和一個初始化的刪除次數k? 我們可以任意選擇從arr中刪除k個陣列元素,請問最後留下來的數字,最少會有幾個不同的數字? 註: 最後不同的數字越少越好。 題目的原文敘述 測試範例 Example 1: Input: arr = [5,5
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
題目敘述 題目會給我們泰伯納西數列的一般項和初始條件,要求我們實現找出第n項的function。 def tribonacci(self, n: int): 泰伯納西數列的一般項: Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. 泰伯納西數列的初始條件: T0 = 0,
題目敘述 題目會給我們一個輸入整數陣列arr,和一個初始化的刪除次數k? 我們可以任意選擇從arr中刪除k個陣列元素,請問最後留下來的數字,最少會有幾個不同的數字? 註: 最後不同的數字越少越好。 題目的原文敘述 測試範例 Example 1: Input: arr = [5,5
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「我們一直都很關心XXX???」「要他多注意小心啊!」,出席勞資調解會議,聽到雇主一點都不心虛的這樣說時,心裡忍不住白眼了幾百次…。那今天來這裡是????。 9月連假前,參加一場勞資調解會議,我不是調解委員,代表勞工出席。這是第一次參加調解會議,把所有我知道的勞動法令實際上陣演練。 個案的狀況
Thumbnail
你的空間缺少色彩的力量嗎? 有時,你或許會覺得自己的日常生活或家居空間顯得單調乏味,好像少了某種激情和活力,甚至有些沉悶。 色彩不僅能讓一個空間從視覺上煥然一新,它還擁有著改變心情不可思議力量,以及展示你品味和個性的特性。 柔和的色調會讓你感到寧靜或放鬆,鮮豔的色彩能喚起活力和創造性,大膽的紅色
Thumbnail
最近假冒遠通電收的詐騙簡訊變本加厲,還以「紅單」和送交「執法機關」威脅,引導你進入網站繳納通行費,其實根本是要把個資都騙去,還要盜刷信用卡
Thumbnail
摘要 木作在室內設計中扮演打框架、做結構,讓造型千變萬化的角色。系統櫃則是乖寶寶,線條筆直一板一眼,材質耐用耐磨。 本文要介紹,當系統櫃遇上木作,兩者的結合會為室內設計帶來什麼奇妙的火花。 相關作品>>定潮6F 在系統櫃結合木作前,先來認識什麼是系統櫃? 系統櫃是一種可以依照自家空間大小量身定做的傢
Thumbnail
美艷的女特務、還不錯的動作場面加上層層堆疊的懸疑劇情,這樣的組合理論上會是一部令人享受的娛樂佳作,然而Luc Besson的Anna卻給了一段我不甚滿意的觀影體驗。
Thumbnail
​ 台北市寸土寸金,大多數土地都已變成水泥叢林,公園綠地更顯得難能可貴;據台北市政府資料統計,台北市共有九百三十二處公園綠地,若以區域來看,文山區市民享有公園綠地面積最高,其次為北投區,第三名則為中山區。先前小編介紹過中山區林森與康樂公園、松江詩園、花博公園、榮星花園等等幾個公園,這些公園都頗有自已
Thumbnail
2021/06/03 看似無聊又單調的基本練習,常常是能否脫穎而出的關鍵 如果你對基本練習感到枯燥又乏味 那是因為還無法從中獲得樂趣 也代表這件事情對你來說完全不熟練,只是你單方面覺得熟練而已。
Thumbnail
來到「綠midori」享受了一場具視覺與味覺雙重饗宴的無菜單日式料理秀,沒有醒目招牌的「綠midori」連門面都十分低調,去年八月開業至今已一年多,過去鮮少品嚐無菜單日式料理的我,這次真在「綠midori」徹底大開眼界!
Thumbnail
護士大部分時間都穿著護士服。事實上,他們甚至用它來開始和結束一天。當一些朋友下班後邀請他們的時候,他們已經有了厭倦穿衣服和參加聚會的感覺。護士接受這樣一個事實:她們被困在一個職業中,幾乎沒有時間享受生活中更好的選擇,比如時尚。這個網站將改變你原本枯燥的風格,以更好的和新的護士服介紹給你,接下來你只要
Thumbnail
在監獄裡吃著重複而單調乏味的食物,一看到報紙飲食版以及電視廣告,就會覺得特別肚餓,甚至我更擔心舌頭的味覺失靈,真的很想念咖啡和可樂的味道……
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「我們一直都很關心XXX???」「要他多注意小心啊!」,出席勞資調解會議,聽到雇主一點都不心虛的這樣說時,心裡忍不住白眼了幾百次…。那今天來這裡是????。 9月連假前,參加一場勞資調解會議,我不是調解委員,代表勞工出席。這是第一次參加調解會議,把所有我知道的勞動法令實際上陣演練。 個案的狀況
Thumbnail
你的空間缺少色彩的力量嗎? 有時,你或許會覺得自己的日常生活或家居空間顯得單調乏味,好像少了某種激情和活力,甚至有些沉悶。 色彩不僅能讓一個空間從視覺上煥然一新,它還擁有著改變心情不可思議力量,以及展示你品味和個性的特性。 柔和的色調會讓你感到寧靜或放鬆,鮮豔的色彩能喚起活力和創造性,大膽的紅色
Thumbnail
最近假冒遠通電收的詐騙簡訊變本加厲,還以「紅單」和送交「執法機關」威脅,引導你進入網站繳納通行費,其實根本是要把個資都騙去,還要盜刷信用卡
Thumbnail
摘要 木作在室內設計中扮演打框架、做結構,讓造型千變萬化的角色。系統櫃則是乖寶寶,線條筆直一板一眼,材質耐用耐磨。 本文要介紹,當系統櫃遇上木作,兩者的結合會為室內設計帶來什麼奇妙的火花。 相關作品>>定潮6F 在系統櫃結合木作前,先來認識什麼是系統櫃? 系統櫃是一種可以依照自家空間大小量身定做的傢
Thumbnail
美艷的女特務、還不錯的動作場面加上層層堆疊的懸疑劇情,這樣的組合理論上會是一部令人享受的娛樂佳作,然而Luc Besson的Anna卻給了一段我不甚滿意的觀影體驗。
Thumbnail
​ 台北市寸土寸金,大多數土地都已變成水泥叢林,公園綠地更顯得難能可貴;據台北市政府資料統計,台北市共有九百三十二處公園綠地,若以區域來看,文山區市民享有公園綠地面積最高,其次為北投區,第三名則為中山區。先前小編介紹過中山區林森與康樂公園、松江詩園、花博公園、榮星花園等等幾個公園,這些公園都頗有自已
Thumbnail
2021/06/03 看似無聊又單調的基本練習,常常是能否脫穎而出的關鍵 如果你對基本練習感到枯燥又乏味 那是因為還無法從中獲得樂趣 也代表這件事情對你來說完全不熟練,只是你單方面覺得熟練而已。
Thumbnail
來到「綠midori」享受了一場具視覺與味覺雙重饗宴的無菜單日式料理秀,沒有醒目招牌的「綠midori」連門面都十分低調,去年八月開業至今已一年多,過去鮮少品嚐無菜單日式料理的我,這次真在「綠midori」徹底大開眼界!
Thumbnail
護士大部分時間都穿著護士服。事實上,他們甚至用它來開始和結束一天。當一些朋友下班後邀請他們的時候,他們已經有了厭倦穿衣服和參加聚會的感覺。護士接受這樣一個事實:她們被困在一個職業中,幾乎沒有時間享受生活中更好的選擇,比如時尚。這個網站將改變你原本枯燥的風格,以更好的和新的護士服介紹給你,接下來你只要
Thumbnail
在監獄裡吃著重複而單調乏味的食物,一看到報紙飲食版以及電視廣告,就會覺得特別肚餓,甚至我更擔心舌頭的味覺失靈,真的很想念咖啡和可樂的味道……