每日温度—leetcode739
生活随笔
收集整理的這篇文章主要介紹了
每日温度—leetcode739
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
請根據每日 氣溫 列表,重新生成一個列表。對應位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之后都不會升高,請在該位置用?0 來代替。
例如,給定一個列表?temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是?[1, 1, 4, 2, 1, 1, 0, 0]。
提示:氣溫 列表長度的范圍是?[1, 30000]。每個氣溫的值的均為華氏度,都是在?[30, 100]?范圍內的整數。
?
思路1:簡單直觀方法,暴力搜索,可惜超時
class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {int n = T.size();vector<int> result;for(int i=0;i<n;++i){int temp_i = i;int temp_n = 0;while(temp_i+1<n && T[i]>=T[temp_i+1]){temp_i++;temp_n++;}if(temp_i==n-1)result.push_back(0);elseresult.push_back(temp_n+1);}return result;} };思路2:單調找
使用單調棧解這題很方便。當遇到比 以棧頂元素(表示下標)為下標的元素 還大的數,說明該天就是更高的氣溫,而等待的天數即為i - st.top(),隨后移除棧頂元素即可;當遇到 不大于 以棧頂元素(表示下標)為下標的元素 的數,說明該天不是更高的氣溫,則將該元素的下標 入棧,實際上維護一個單調遞減棧。
?
總結
以上是生活随笔為你收集整理的每日温度—leetcode739的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回文子串—leetcode647
- 下一篇: 根据身高重建队列—leetcode406