難度:中等
題目:請根據每日 氣溫 列表,重新生成乙個列表。對應位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之後都不會公升高,請在該位置用 0 來代替。
例如,給定乙個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]。
思路:第一種思路是暴力解法(不可取)。第二種思路:按照題目要求是,找出陣列後面第乙個比他大的數,並算出差值,放到res陣列中儲存,因此,我們可以使用單調棧來解決此問題。
可以維護乙個儲存下標的單調棧,從棧底到棧頂的下標對應的溫度列表中的溫度依次遞減。如果乙個下標在單調棧裡,則表示尚未找到下一次溫度更高的下標。
正向遍歷溫度列表。對於溫度列表中的每個元素 t[i],如果棧為空,則直接將 i 進棧,如果棧不為空,則比較棧頂元素 previndex 對應的溫度 t[previndex] 和當前溫度 t[i],如果 t[i] > t[previndex],則將 previndex 移除,並將 previndex 對應的等待天數賦為 i - previndex,重複上述操作直到棧為空或者棧頂元素對應的溫度小於等於當前溫度,然後將 i 進棧。
class
solution
stack.
push
(i);
}return res;
}}
class
solution}}
res[t.length-1]
=0;return res;
}}
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...