請根據每日 氣溫 列表,重新生成乙個列表。對應位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之後都不會公升高,請在該位置用 0 來代替。
例如,給定乙個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]。
建立乙個棧,遍歷陣列,棧為空時放入元素,當前元素與棧頂元素比較,如果當前元素大於棧頂元素,棧頂元素彈出並將下標差存入結果陣列中,繼續判斷棧頂元素大小,直到當前元素小於棧頂元素或者棧為空,當前元素入棧,
當前項向左找第乙個比自己大的位置 —— 從左向右維護乙個單調遞減棧
當前項向左找第乙個比自己小的位置 —— 從左向右維護乙個單調遞增棧
當前項向右找第乙個比自己大的位置 —— 從右向左維護乙個單調遞減棧
當前項向左找第乙個比自己大的位置 —— 從右向左維護乙個單調遞增棧
例如單調增棧:
棧內元素都是遞增的,如果新的元素比棧頂元素大就入棧。如果新的元素比棧頂小就彈出棧內元素直到棧頂比新元素小。當元素出棧的時候,說明新元素是出棧元素右邊的第乙個比自身小的元素,出棧元素在棧中的前乙個元素是出棧元素左邊的第乙個比自身小的元素、
目標:找更高的氣溫——即更大的數——即更大時出棧(大於棧頂元素時)——單調遞減
總結動畫
deque、stack區別
public
int[
]dailytemperatures
(int
t)//入棧的是元素下標,因為可以通過陣列訪問下標確定元素但是不能通過元素確定下標。
stack.
push
(i);
}return res;
}
739 每日溫度 單調棧
739.每日溫度 o n 2 o n 2 o n2 class solution else res i tmp return res o n o n o n class solution stack.push i return res 單調棧 monotone stack 是指棧內元素 棧底到棧頂 ...
739 每日溫度 遞減棧
根據每日氣溫列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高的天數。如果之後都不會公升高,請輸入0來代替。例如,給定乙個列表temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 氣溫列表長度的範圍是 1,30...
單調棧 每日溫度
題目 根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸出是需要再等待多久溫度才會公升高超過該日的天數。如果之後都不會公升高,請在該位置用 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 思...