题目传送门:
739. 每日温度 - 力扣(LeetCode)https://leetcode.cn/problems/daily-temperatures/description/
思路:
就是单调栈的思路,具体见代码
不知道单调栈的,可以看我的这篇文章:
数据结构 单调栈-CSDN博客https://blog.csdn.net/qwq_ovo_pwp/article/details/143243268?spm=1001.2014.3001.5501代码:
class Solution
{
public:
vector<int> dailyTemperatures(vector<int>& temperatures)
{
int top = -1, stk[100010] = { 0 };
vector<int> ret(temperatures.size(), 0);//该思路要求一开始全初始化为0
for (int i = temperatures.size() - 1; i >= 0; i--)//从末尾开始遍历思路和代码更简洁
{
//栈stk用于存放遍历过的元素的下标
//每次将当前元素与栈顶元素比较,若栈顶元素小于当前元素,那么可以直接出栈,理由在单调栈实现里讲到了
while (top > -1 && temperatures[stk[top]] <= temperatures[i]) top--;
if (top > -1) ret[i] = stk[top] - i;
//else不用写,因为此时ret[i]=0,一开始已经全初始化为0了
stk[++top] = i;
}
return ret;
}
};