网站建设首先要选择题WordPress唯美个人博客主题
2026/4/18 8:28:58 网站建设 项目流程
网站建设首先要选择题,WordPress唯美个人博客主题,wordpress主叶SEO优化,荥阳市城乡建设规划网站题目描述 给定一个整数数组 temperatures #xff0c;表示每天的温度#xff0c;返回一个数组 answer #xff0c;其中 answer[i] 是指对于第 i 天#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高#xff0c;请在该位置用 0 来代替。 示例 1: 输入…题目描述给定一个整数数组temperatures表示每天的温度返回一个数组answer其中answer[i]是指对于第i天下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用0来代替。示例 1:输入:temperatures [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入:temperatures [30,40,50,60]输出:[1,1,1,0]示例 3:输入:temperatures [30,60,90]输出:[1,1,0]提示1 temperatures.length 10530 temperatures[i] 100解决方案这段代码是基于单调栈求解 “每日温度” 问题的经典逆序遍历实现核心思路是从后往前遍历温度数组利用栈记录未找到更高温度的下标通过维护栈的单调递减特性快速找到每个位置下一个更高温度的天数。核心逻辑核心定义ans结果数组ans[i]表示第i天需要等待多少天才能遇到更高温度初始值默认为 0t_num单调栈存储数组下标栈内下标对应的温度严格单调递减用于记录后续未被匹配的 “更高温度候选位置”。遍历方式从数组末尾ilen-1向前遍历逆序处理能让每个元素仅入栈 / 出栈一次保证时间效率。单调栈核心操作对于当前下标i的温度tmp①清理无效元素循环弹出栈顶元素直到栈为空或栈顶下标对应的温度 tmp这些栈顶元素的温度≤当前温度无法成为当前位置的 “更高温度”需剔除②计算结果若栈非空说明栈顶下标是当前位置的下一个更高温度位置ans[i] 栈顶下标 - i若栈空ans[i]保持 0无更高温度③入栈当前下标将i压入栈作为前面位置的 “更高温度候选”。结果返回遍历完成后ans数组即为每个位置对应的等待天数直接返回。关键特点时间复杂度 O (n)每个元素仅入栈、出栈各一次无嵌套循环的额外开销空间复杂度 O (n)栈最多存储所有下标最坏情况温度单调递减结果数组为 O (n)单调栈特性栈内下标对应的温度始终保持单调递减确保能快速找到 “下一个更高温度”逆序优势逆序遍历让后续的 “更高温度” 先入栈当前位置只需对比栈顶即可逻辑更简洁。验证示例以temperatures [73,74,75,71,69,72,76,73]为例遍历到 73i7栈空→ans [7]0入栈 7遍历到 76i6栈顶 7 对应 73≤76→弹出栈空→ans [6]0入栈 6遍历到 72i5栈顶 6 对应 7672→ans [5]6-51入栈 5最终ans [1,1,4,2,1,1,0,0]与预期结果一致。总结核心思路逆序遍历 单调栈利用栈的单调性快速匹配 “下一个更高温度”避免暴力遍历的 O (n²) 复杂度关键设计栈存储下标而非温度值既保留温度对比能力又能直接计算天数差功能效果是 “下一个更大元素” 类问题的最优解法能高效处理任意长度的温度数组。函数源码class Solution { public: vectorint dailyTemperatures(vectorint temperatures) { int lentemperatures.size(); vectorint ans(len); stackint t_num{}; for(int ilen-1;i0;i--){ int tmptemperatures[i]; while(!t_num.empty() tmptemperatures[t_num.top()]){ t_num.pop(); } if(!t_num.empty()){ ans[i]t_num.top()-i; } t_num.push(i); } return ans; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询