LeetCode739每日溫度 思維或單調棧

2021-10-21 19:24:26 字數 753 閱讀 4754

題目鏈結

之前沒接觸過單調棧的題以為是思維題想了乙個思路 時間超越100%

倒著遍歷 倒數第乙個為0

依次遍歷的時候先和第i+1的元素比較,如果第i+1個元素大於當前元素則答案陣列賦值為1

如果第i+1個元素不比自己大,找比第i+1個元素大的值,直到找到第乙個大於第i個元素的元素或者某個res[vis] = 0 則賦值為0 說明沒有比當前元素大的值了。

public

int[

]dailytemperatures

(int

t)}}

}return res;

}

遍歷整個陣列,如果棧不空,且當前數字大於棧頂元素,那麼如果直接入棧的話就不是 遞減棧 ,所以需要取出棧頂元素,由於當前數字大於棧頂元素的數字,而且一定是第乙個大於棧頂元素的數,直接求出下標差就是二者的距離。

繼續看新的棧頂元素,直到當前數字小於等於棧頂元素停止,然後將數字入棧,這樣就可以一直保持遞減棧,且每個數字和第乙個大於它的數的距離也可以算出來。

public

int[

]dailytemperatures

(int

t)stack.

push

(i);

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