1. 题目链接
2. 题目描述
3. 解题方法
- 用一个栈st保存每个数的下标,同时创建一个数组res保存结果,初始值都为0。
- 循环遍历题目中的数组temperature。
- 如果temperature[i] > st.top(),证明碰到了下一个更高温度。
- 此时弹出st.top(),然后记录结果。
- 记得将遍历的temperature[i]的下标放入栈中。
4. 代码
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures)
{
stack<int> st;
int n = temperatures.size();
vector<int> res(n);
for(int i = 0; i < n; i++)
{
while(!st.empty() && temperatures[st.top()] < temperatures[i])
{
int top = st.top();
st.pop();
res[top] = i - top;
}
st.push(i);
}
return res;
}
};
最后附上我的打卡记录,希望各位大佬可以监督我。