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

LeetCode 热题 42.接雨水(双指针写法)

题目

思路:

我们知道柱子想要接水需要左右两边有比自己高的柱子,并且水面由矮的那根柱子决定。最简单想到的就是遍历一遍,先存下没个柱子左右两边最高的柱子高度。
我们可以在这里优化一下,用两个指针 l ,r 从 0 和 n-1 出发,动态记录目前左右两边最高的柱子高度,边走边更新。每一步比较一下当前左右两边最高柱子的高度谁矮,矮的一边往里面走一格,并立即计算这根柱子和这根柱子所在侧的最高柱子的高度差,这就是这根柱子的接水量,因为我们是先更新最高柱子的高度,再计算接水量,所以这根柱子的高度一定 <= min(左边最高柱子的高度, 右边最高柱子的高度),并且 水面高度已经被矮墙卡死,不会多算。
代码如下:

       int len = height.size();if (len < 3) return 0; int ans = 0;int l = 0, r = len - 1;int lmax = height[l], rmax = height[r];while (l < r){lmax = max(height[l], lmax);rmax = max(height[r], rm	ax);//  谁矮 哪边往里走,因为水面由矮墙决定if (lmax < rmax){ans += lmax - height[l ++]; } else ans += rmax - height[r --];}return ans;
http://www.dtcms.com/a/376897.html

相关文章:

  • 带你走进vue的响应式底层
  • 【算法--链表】117.填充每个节点的下一个右侧节点指针Ⅱ--通俗讲解
  • BFS与FloodFill算法简介与实战
  • 闭包面试题
  • el-table表头做过滤
  • LaTeX 中给单个/部分参考文献标记颜色(BibTeX 文献引用)
  • 深入探讨讲解MOS管工作原理-ASIM阿赛姆
  • 环境变量_进程地址空间
  • 文档抽取技术:革新合同管理,提升效率、准确性和智能化水平
  • 关于CSDN中图片无法粘贴的问题解决办法
  • 初始python
  • webshell上传方式
  • 图论2 图的数据结构表示
  • 09使用Python操作MySQL
  • 视频加水印,推荐使用运营大管家-视频批量加水印软件
  • Golang适配器模式详解
  • 【Linux】jar文件软链接和硬链接的操作区别
  • java控制台手动
  • Java入门级教程16——集合
  • docker桌面版 镜像配置
  • JVM 全面详解:深入理解 Java 的核心运行机制
  • JVM分代收集:原理与调优策略
  • 使用.NET标准库实现多任务并行处理的详细过程
  • 软件测试:功能测试详解
  • 数字图像处理-图像编码
  • 基于RDMA 通信的可负载均衡高性能服务架构
  • java多线程场景3-并发处理和异步请求
  • <uniapp><指针组件>基于uniapp,编写一个自定义箭头指针组件
  • 新手向:中文语言识别的进化之路
  • Jakarta EE 课程 --- 微型资料投递与分发(Mini Drop-off Box)