739. Daily Temperatures

仅供自己学习

 

思路:

因为要找到后续元素大于当前元素的位置,那么就具有滞后性,我们需要保存当前元素的位置,然后再往后找更大的元素。

对栈的用法如下;

我们正向遍历T数组,如果栈空那么我们肯定得先加入元素。

循环判断当前遍历到的元素和栈顶元素的大小,如果大于那么就把 当前元素的位置-栈顶存放的位置 的结果赋值给res数组,再把栈顶元素弹出。如果小于,那么就把该元素入栈。不管是否新加入新元素,每次都取栈顶元素来判断。

 

代码:

 1 class Solution {
 2 public:
 3     vector<int> dailyTemperatures(vector<int>& T) {
 4         int n= T.size();
 5         vector<int> res(n);
 6         stack<int> st;
 7         for(int i=0; i < n;++i){
 8             while(!st.empty()&&T[i]>T[st.top()]){
 9                 int idx = st.top();
10                 res[idx]=i-idx;
11                 st.pop();
12             }
13             st.push(i);
14         }
15         return res;
16     }
17 };

 

posted @ 2021-03-29 18:46  Mrsdwang  阅读(35)  评论(0编辑  收藏  举报