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

LeetCode 热题100:42.接雨水

 这道题也可以用双指针

情景:如果有一个木桶,做桶高为left,右桶高为right,桶的底座厚height,则水可以接的面积为:

Volume = min(left, right) - height,即总是以桶最短的边减去底座装满水


解题思路: 

  1. 双指针从桶的最左边[0]和最右边[length-1]开始
  2. 记录当前桶的左边桶高为height[left]和height[right],将left_max = height[left]和right_max = height[right]此时无法接水。
  3. 由于总是以桶最短的边减去底座装满水:
    1. 如果left_max > right_max:移动短桶边(也就是right_max一边)使right--。
    2. 移动后,若height[right] 比 right_max 小,则该格接水公式为:V = min(left, right) - height[right]。将每一个格子接水累加,得到最终答案。
    3. 移动后,若height[right] 比 right_max大,则将right_max更新为当前桶高。
    4. 判断左右边界桶高,重复1-2-3的步骤,左右同理。

关键理解点1:不论如何,right指针和left指针最终会汇聚到height最高的一列,也就是Math.max(...height)

关键理解点2:每一格为最小单位,它总是以桶最短的边减去底座高度装水。

结合代码更好理解,代码如下:

var trap = function (height) {let ans = 0;let left = 0;let right = height.length - 1;let left_max = 0;let right_max = 0;while (left < right) {left_max = Math.max(height[left], left_max);right_max = Math.max(height[right], right_max);if (left_max < right_max) {ans = ans + left_max - height[left];left++;} else {ans = ans + right_max - height[right];right--;}}return ans;
};

http://www.xdnf.cn/news/16009.html

相关文章:

  • 如何在 Windows 10 下部署多个 PHP 版本7.4,8.2
  • 从零搭建 OpenCV 项目(新手向)--第一天初识OpenCV与图像基础
  • javaweb小案例1
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 在腾讯云上安装gitlab
  • Qt开发环境搭建全攻略(Windows+Linux+macOS)
  • 【Altium Designer2025】电子设计自动化(EDA)软件——Altium Designer25版保姆级下载安装详细图文教程(附安装包)
  • 基于JAVA实现基于“obj--html--pdf” 的PDF格式文本生成
  • linux内核与GNU之间的联系和区别
  • 【QT常用技术讲解】QSystemTrayIcon系统托盘
  • 大模型——Data Agent:超越 BI 与 AI 的边界
  • 跨境企业破局国际市场:海外媒体发稿如何为品牌声誉赋能?
  • 算法笔记之堆排序
  • Docker实战:使用Docker部署TeamMapper思维导图工具
  • haproxy七层代理新手入门详解
  • EasyMan 数字人服务全面焕新,交互型AI数字人助推孪生体验全新升级
  • 大模型——上下文工程如何重塑智能体的“思考方式”
  • 【接口自动化】掌握接口自动化:核心概念讲解(理论知识)
  • Qt定时器与事件循环机制
  • C#初学知识点总结
  • 牛客:最长无重复子数组
  • 西门子 S7-1500分布式 I/O通信 :PROFINET IO 与 PROFIBUS DP核心技术详解(上)
  • Axios Token 设置示例
  • 洛谷刷题7..22
  • 《计算机“十万个为什么”》之 MQ
  • 图像基础:从像素到 OpenCV 的入门指南
  • Kafka单条消息长度限制详解及Java实战指南
  • 基于python django深度学习的中文文本检测+识别,可以前端上传图片和后台管理图片
  • 更具个性的域名:解锁互联网多元价值的钥匙
  • 【Godot4】工具栏组件ToolBar