LeetCode 739 每日溫度

2022-05-28 05:57:13 字數 904 閱讀 5466

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

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

solution:

什麼是單調棧?

單調棧分為單調遞增棧和單調遞減棧,單調遞增棧即棧內元素保持單調遞增的棧,同理單調遞減棧即棧內元素保持單調遞減的棧,跟單調佇列差不多,但是只用到它的一端,利用它可以用來解決一些acm/icpc和oi的題目,如rqnoj 的諾諾的佇列等。

正規化:

單調遞增棧

for(int i = 0; i < t.size(); i++)

stk.push(a[i]);

}

單調遞減棧

for(int i = t.size() - 1; i >= 0; i--)         

stk.push(i);

}

單調棧的作用:

可以以 o(1) 的時間複雜度得知某個位置左右兩側比他大(或小)的數的位置,當你需要高效率獲取某個位置左右兩側比他大(或小)的數的位置的的時候就可以用到單調棧。

求解陣列中元素右邊第乙個比它小的元素的下標,從前往後,構造單調遞增棧;

求解陣列中元素右邊第乙個比它大的元素的下標,從前往後,構造單調遞減棧;

求解陣列中元素左邊第乙個比它小的元素的下標,從後往前,構造單調遞減棧;

求解陣列中元素左邊第乙個比它小的元素的下標,從後往前,構造單調遞增棧

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...