LeetCode 739 每日溫度

2021-09-12 04:05:47 字數 843 閱讀 3730

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高的天數。如果之後都不會公升高,請輸入 0 來代替。

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

從後一天往前一天推,這樣這天往後的所有溫度公升降情況就已知了

最後一天肯定為0,倒數第二天的溫度只和倒數第一天有關,類推

條件只分為兩種情況,大於小於,從當前位置往後遍歷,不過因為已知往後的溫度變化,所以在後一天的下標變化上會節省很多時間

if(t[i]else if(ans[j]==0) 如果j天溫度大於等於i天的溫度,並且j天往後沒有再比j溫度高的時間了那麼i天肯定也是ans[i]=0

再移動下標j時,直接j+=ans[j]就可以,因為ans[j]時比當前溫度高的天數間隔,低的直接就跳過了

class solution 

else

if(ans[j]==0

)}}return ans;}}

;

讓我們從後向前,把溫度的下標i加入棧stack s中,用vector ans儲存結果

如果準備入棧的溫度比棧頂元素高,那麼就丟擲棧頂元素,直到棧空或者溫度比棧頂元素低。因為如果比棧頂溫度高,那麼在判斷時遇到準備入棧的元素就停止了

這樣丟擲所有比當前溫度低的棧中元素後,棧頂元素和當前的距離就是答案,如果棧空就說明後面沒有溫度更高的天了

class solution 

return ans;}}

;

LeetCode 739 每日溫度

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高的天數。如果之後都不會公升高,請輸入 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 static con...

leetcode739 每日溫度

即找之後第乙個比自己大的元素 參考 用棧實現 將元素 下標 依次入棧並且保證棧內元素從棧頂到棧底是遞增的。如果當前元素比棧頂元素大,則說明當前元素就是比棧頂元素大的第乙個元素,求出兩個下標的差值即為棧頂元素對應的結果。依次出棧並計算下標差直到棧頂元素大於當前元素,將當前元素入棧 比如 t 73,74...

leetcode 739 每日溫度

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高超過該日的天數。如果之後都不會公升高,請在該位置用 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 無腦版...