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

LeetCode面试题 17.21 直方图的水量

题目

解答

package leetcode.editor.cn;//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public int trap(int[] height) {int length = height.length;if (length == 0) {return 0;}int[] leftMax = new int[length];leftMax[0] = 0;for (int i = 1, end = length - 1; i < end; ++i) {leftMax[i] = Math.max(leftMax[i - 1], height[i - 1]);}int[] rightMax = new int[length];rightMax[length - 1] = 0;for (int i = length - 2; i >= 0; --i) {rightMax[i] = Math.max(rightMax[i + 1], height[i + 1]);}int result = 0;for (int i = 1, end = length - 1; i < end; ++i) {if (leftMax[i] > height[i] && rightMax[i] > height[i]) {result += Math.min(leftMax[i], rightMax[i]) - height[i];}}return result;}
}
//leetcode submit region end(Prohibit modification and deletion)

测试用例

package leetcode.editor.cn;import org.junit.Assert;
import org.junit.Test;public class SolutionTest {public SolutionTest() {}@Testpublic void test() {Solution s = new Solution();int result = s.trap(new int[]{0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1});Assert.assertTrue(String.valueOf(result), result == 6);}
}

本题目初看之下还是有点唬人的,一下子想不到解答的方法。
把题目分解为两个问题:

  • 指定坐标的位置,能不能盛水。
  • 假如上个命题成立,那么能装多少水。

第一个问题从常识出发,很好解答,即凹进去的位置,才能装水;比周边高的位置,肯定不能装水。
第二个问题,对于能装水的点,装多少水,取决于周边的最小高度,然后减去自身的高度,即是当前坐标点可以盛的水。

http://www.dtcms.com/a/180517.html

相关文章:

  • ABP vNext + EF Core 实战性能调优指南
  • 浏览器自动化与网络爬虫实战:工具对比与选型指南
  • Liunx ContOS7 安装部署 Docker
  • Vue——Axios
  • ESP32开发入门(七):HTTP开发实践
  • Spring框架(1)
  • Idea Code Templates配置
  • CCDO|企业数字化转型:机制革新与人才培育的双重引擎
  • 【库(Library)、包(Package)和模块(Module)解析】
  • 关系模式-无损连接和保持函数依赖的判断
  • WPF 3D图形编程核心技术解析
  • 互联网大厂Java求职面试:基于AI的实时异常检测系统设计与实现
  • JAVA将一个同步方法改为异步执行
  • Altera系列FPGA纯verilog视频图像去雾,基于暗通道先验算法实现,提供4套Quartus工程源码和技术支持
  • 基 LabVIEW 的多轴电机控制系统
  • 如何训练deepseek语言大模型
  • Vue3 中 ref 与 reactive 的区别及底层原理详解
  • sqli-labs靶场18-22关(http头)
  • 人工智能顶会ICLR 2025论文分享│PointOBB-v2:更简单、更快、更强的单点监督有向目标检测
  • NestJS 框架深度解析
  • fakebook
  • Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」
  • 数据库索引
  • 使用 docker 安装 nacos3.x
  • MKS RGA 校准调试MKS eVision和Vision 1000p RGA步骤(图文并茂)
  • 麦科信获评CIAS2025金翎奖【半导体制造与封测领域优质供应商】
  • DeepInjectSQL - 基于 AI 生成对抗网络(GAN)的下一代 SQL 注入自动化漏洞猎手
  • wordpress自学笔记 第二节: 3种独立站商城横幅的制作
  • 【深度学习新浪潮】苹果在显示算法技术上的研发进展调研
  • [论文阅读]Deeply-Supervised Nets