问题描述
解题思路
考虑利用单调栈(monotone stack)来进行处理,如果栈为空或者要入栈的元素小于栈顶元素,那么该元素入栈,否则弹出栈顶元素直到栈为空,或者要入栈的元素小于栈顶元素,再将该元素入栈。
这里应该将数组索引i
入栈会比较方便。
代码
class Solution {
public:
vector<int> dailyTemperatures(vector<int> &temperatures) {
vector<int> res(temperatures.size(), 0);
stack<int> st;
st.push(0);
for (int i = 1; i < temperatures.size(); i++) {
int j = i;
// if (!st.empty()) {
while (!st.empty() && temperatures[i] > temperatures[st.top()]) {
res[st.top()] = i - st.top();
st.pop();
}
st.push(i);
// }
}
return res;
}
};
标签:res,top,元素,daily,st,vector,temperatures,739
From: https://www.cnblogs.com/zwyyy456/p/16911620.html