当前位置: 首页 > news >正文

【算法二十二】 739. 每日温度 42.接雨水

739. 每日温度

单调栈:

class Solution { public int[] dailyTemperatures(int[] temperatures) { int n = temperatures.length; Deque<Integer> stack = new ArrayDeque<>(); int[] ans = new int[n]; for(int i = 0;i<n;i++){ while(!stack.isEmpty() && temperatures[i]>temperatures[stack.peek()]){ int j = stack.pop(); } } } }

时间复杂度:O(N)

空间复杂度:O(N)

核心:

遇到“找右边第一个比我大的数”、“找左边第一个比我小的数”

处理“凹”或“凸”的形状:比如接雨水(找凹槽)或者最大矩形面积(找左右边界)

计算“跨度”或“贡献”:某个数在什么范围内是最大的?(比如:子数组最小值之和)





42. 接雨水

双指针:

class Solution { public int trap(int[] height) { int ans = 0; int left = 0; int right = height.length - 1; int preMax = 0; int behMax = 0; while(left < right){ //计算高度包含本高度的原因是,不需要写 if-else 去判断当前柱子是否比最大高度矮 //矮的可以存水,高的不能存水 //代码通过一次减法自动兼容了存水还是不能存水的逻辑 preMax = Math.max(preMax,height[left]); behMax = Math.max(behMax,height[right]); if(preMax < behMax){ ans += preMax - height[left]; left++; } else{ ans += behMax - height[right]; right--; } } return ans; } }

时间复杂度:O(N)

空间复杂度:O(1)

核心:Math.min(preMax,behMax) - height[i]

单调栈:

class Solution { public int trap(int[] height) { int ans = 0; Deque<Integer> stack = new ArrayDeque<>(); for(int i = 0;i<height.length;i++){ while(!stack.isEmpty() && height[stack.peek()]<height[i]){ int bottom = height[stack.pop()]; if(stack.isEmpty()){ break; } int left = stack.peek(); int h = Math.min(height[left],height[i])-bottom; ans += h*(i-left-1); } stack.push(i); } return ans; } }

时间复杂度:O(N)

空间复杂度:O(N)

http://www.jsqmd.com/news/468705/

相关文章:

  • 基于Python的汽车保养系统设计与实现毕业设计
  • Meta发布四款Broadcom定制AI芯片,性能超越商用产品
  • flask:接收json参数
  • 量获取产品详情 小牛三下五除二就干上线了 代码那是写的干净又漂亮,没有一行多余的代码 只是性能有一点点瑕疵 每个商品获取要.秒,获取 ...
  • oceanbase-长事务排查
  • 市面上口碑好的百联OK卡回收平台推荐 - 京顺回收
  • 大模型推理服务架构优化指南(非常详细),vLLM扩缩容从入门到精通,收藏这一篇就够了!
  • OpenClaw安装与github账号注册
  • 2026年进销存软件十大权威排名,这5款让中小商家效率翻倍!
  • WAF绕过技巧与原理深度剖析
  • 中小企业也能拍电影级宣传片?山间清风‘轻量高质’套餐改写潍坊营销规则
  • 每天浪费 分钟杀端口?我开发了一个工具终结这种痛苦
  • 四川新脉动科技 × 搭贝零代码:制造业“专精特新“企业的数字化升级样本
  • 2026年一物一码防伪公司实力哪家强?顶讯科技稳居行业前列
  • 【一步步开发AI运动APP】十三、如何进行运动开始前的站位预检,提升用户体验
  • 2026年制造业人事系统推荐:10款支持复杂考薪的主流产品测评与对比
  • 探索MATLAB中考虑能源集线器的电热综合能源市场双层出清模型
  • Ant Design Vue Popover控件抖动
  • 国内可用OpenClaw安装教程
  • 频模式从底层上的了解,这一篇主要记录一下带通采样定理的知识,下一篇会涉及到三种混频模式的配置不同 在这里采样和频谱混叠等本科基础知识 ...
  • (持续更新 2026) 一文看懂各 AI 模型能力, 理清模型、应用与公司之间关系, 选择最适合业务的模型? #002
  • 文档也很齐全。但是在统信系统中部署和打包 Avalonia 程序为安装包,我是从来都没有这样做过的。其实,在 Windows 平台下 ...
  • 【wail框架】web+go的混合架构简要指南
  • 服务器监控集中式部署方案 V5.0(全量详细版)
  • 【Linux系统安装、配置mysql数据库详细过程,亲自部署成功后分享mysql安装过程,ARM架构安装、配置 mysql,包细节,各种系统架构和版本都适用!】
  • 计算机系统基础知识(补充):硬件篇之指令系统详解
  • 导师又让重写?千笔AI,一键生成论文神器
  • OpenClaw踩坑记录
  • C++起始之路——list
  • 小迪安全|sql盲注一些知识点