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

手撕算法-接雨水

描述

image.png

分析

i位置能积累的雨水量,等于其左右两边最大高度的最小值。
为了能获取i位置左右两边的最大高度。使用动态规划。
两个dp数组:

  • leftMax
  • rightMax

其中

  • leftMax[i] 代表i位置左边的最大高度
  • rightMax[i] 代表i位置右边的最大高度

初始状态:

  • leftMax[0] = 0;
  • rightMax[0] =0;

填充这两个dp数组。

那么i位置最终能存的雨水量为:min(eftMax[i] , rightMax[i]) - height[i]

遍历所有位置,即可得到总共能接的雨水数。

image.png

代码

class Solution {public int trap(int[] height) {int n = height.length;int[] leftMax = new int[n];int[] rightMax = new int[n];leftMax[0] = height[0];for (int i = 1; i < n; i++) {leftMax[i] = Math.max(leftMax[i - 1], height[i]);}rightMax[n - 1] = height[n - 1];for (int i = n - 2; i >= 0; i--) {rightMax[i] = Math.max(rightMax[i + 1], height[i]);}int res = 0;for (int i = 0; i < n; i++) {res += Math.min(leftMax[i], rightMax[i]) - height[i];}return res;}
}

image.png

面试公司

http://www.lryc.cn/news/324716.html

相关文章:

  • 探索AI大模型学习:理论基础、技术突破与未来挑战
  • Linux:点命令source
  • iOS开发 - 转源码 - __weak问题解决
  • 【Linux基础】dash和bash简介
  • 精读《如何做好 CodeReview》
  • 双指针(滑动窗口)-算法刷题
  • 上位机图像处理和嵌入式模块部署(qmacvisual之ROI设定)
  • 银行监管报送系统介绍(五):金融统计数据大集中自动化报送系统——PBOC Report
  • 常用中间件redis,kafka及其测试方法
  • ROS1通过rosbridge在局域网中控制turtle进行运动(PC和手机)
  • MQ高级篇---消息可靠性
  • SpringMVC | SpringMVC中的 “文件上传和下载”
  • JVM快速入门(2)HotSpot和堆、新生区、永久区、堆内存调优、JProfiler工具分析OOM原因、GC(垃圾回收)、JVM经典面试笔试题整理
  • 我的风采——android studio
  • BMS设计中的短路保护和MOSFET选型(上)
  • 用go实现一个任务调度类 (泛型)
  • ansible 管理工具以及常用模块
  • javaSSM公司招聘管理系统IDEA开发mysql数据库web结构计算机java编程maven项目
  • 蓝桥杯day11刷题日记
  • IDEA, Pycharm, Goland控制台乱码
  • JavaScript单元测试jasmine学习(一)
  • 108、3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • PHP之CURL和Socket
  • 【Web】NKCTF 2024 个人wp(部分)
  • QT常见布局器使用
  • 政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍
  • 宝石与石头
  • 【Vue3之computed属性(四)】
  • 生产力工具|安装更新R软件(R、studio)
  • ffmpeg实现媒体流解码