力扣-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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步