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