日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每日温度—leetcode739

發布時間:2024/4/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日温度—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(),隨后移除棧頂元素即可;當遇到 不大于 以棧頂元素(表示下標)為下標的元素 的數,說明該天不是更高的氣溫,則將該元素的下標 入棧,實際上維護一個單調遞減棧。

class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {int n = T.size();stack<int> st;vector<int> ans(n,0); for(int i=0; i<n; i++){ while(!st.empty() && T[i] > T[st.top()]) {int t = st.top();ans[t] = i - t;st.pop();} st.push(i);}return ans; } };

?

總結

以上是生活随笔為你收集整理的每日温度—leetcode739的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。