2022-12-20 16:29阅读: 21评论: 0推荐: 0

力扣-739-每日温度

返回一个数组,ans[i]表示相对于第i天的温度而言,下一个更高的温度出现在几天后
如果没有就是0

一开始接单粗暴地两层for循环遍历,不出意外地超时了
后来又想到可以排序后比对位置,但是数组中可能出现重复的元素,于是又被否决了

官方题解给出的是用“单调栈”

虽然不理解是怎么想到的以及为什么这样是正确的,但是先会用

vector<int> dailyTemperatures(vector<int>& temperatures) {
int n = temperatures.size();
vector<int> ans(n);
stack<int> stk;
for (int i = 0; i < n; i++) {
while (!stk.empty() && temperatures[i] > temperatures[stk.top()]) {
int preIndex = stk.top();
ans[preIndex] = i - preIndex;
stk.pop();
}
stk.push(i);
}
return ans;
}

为什么push一定要放在后面呢?

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/16982765.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起