leetcode 739 每日溫度

2021-10-07 02:31:41 字數 696 閱讀 2524

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

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

通過次數63,638提交次數101,539

思路:

單調棧,維護乙個棧內元素單調遞減的棧(儲存的是下標),在遇到比棧頂下標所指代的元素大的元素的時候,計算當前大元素與棧頂元素的位置差,計入結果陣列中即可。

直觀的理解,順序遍歷整個陣列,如果棧為空,則將當前元素下標放入棧中,之後的每個元素與棧頂元素進行比較,如果比棧頂元素小,代表沒有找到當前棧頂的更大的值,因此將現在的元素下標push入陣列,因為必定之後是先遇到比當前元素大的元素,再遇到比當前棧頂大的元素(可能同時遇到,但是也需要先處理當前元素);而如果比棧頂元素大,則表示找到了更大的元素,記錄此時的下標差即可。

單調棧相關的題目,日後需要總結一下

class

solution

st.push

(i);

}return ret;}}

;

LeetCode 739 每日溫度

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

LeetCode 739 每日溫度

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

leetcode739 每日溫度

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