LeetCode 739題 每日溫度

2021-10-09 07:24:15 字數 706 閱讀 8213

請根據每日 氣溫 列表,重新生成乙個列表。對應位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之後都不會公升高,請在該位置用 0 來代替。

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

每遇到乙個元素,就從它開始一直遍歷到下乙個比他大的元素為止,遇到之後賦值即可,時間複雜度o(n2)

class

solution}}

return ans;

}}

提交之後leetcode上執行時間是1099ms

按順序遍歷陣列,同時使用乙個棧,棧內存放的元素都是沒有找到下乙個更大的數的下標,每次遇到乙個新元素,因為它肯定沒有找到下乙個更大的元素,所以要入棧,在入棧之前需要做一些操作:判斷一下棧頂的下標的元素是不是小於當前的元素,如果小於,那麼棧頂需要找的元素就是目前訪問的這個元素,否則,說明還是沒有找到,將這個數繼續入棧。這樣只需要到達陣列結尾的時候,就可以確定所有元素的值了,時間複雜度o(n)

class

solution

stack.

push

(i);

}return ans;

}}

提交之後leetcode上執行時間是20ms,相比之前的少了很多。

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