题目描述:
通俗一点就是,从当前开始,往后看,看到升温的那一天目前需要等多久~
思路:
单调栈解法:参考下一个更大元素leetcode 503题的思路以及解法
不同之处在于,题目要求返回的不是原来数组的值了 ,而是“距离”,所以需要调整一下,数组存放的应该是索引
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
vector<int> res(T.size());//存放的是索引
stack<int> s;
//使用单调栈
for (int i = T.size() - 1; i >= 0; i --) {
while(!s.empty() && T[s.top()] <= T[i] ) {
s.pop();
}
res[i] = s.empty() ? 0 : (s.top() - i);//s.top() - i 就是距离了
s.push(i);
}
return res;
}
};
结果:
总结:单调栈解法的巧妙使用~