739.每日温度:https://leetcode.cn/problems/daily-temperatures/submissions/
单调栈:构造一个单调递减的栈(从栈底到栈顶单调递减)
逆序构造单调栈,保证每一个元素后的元素都已知
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
int n = temperatures.size();
vector<int> ans(n, 0);
stack<int> st;
for (int i = n - 1;i >= 0;i--)
{
while (!st.empty() && temperatures[st.top()] <= temperatures[i])
{
st.pop();
}
ans[i] = st.empty() ? 0 : st.top() - i;
st.push(i);
}
return ans;
}
};