根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸出是需要再等待多久溫度才會公升高超過該日的天數。如果之後都不會公升高,請在該位置用 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...