当前位置: 首页 > 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);}
}

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

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

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

相关文章:

  • 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 框架深度解析
  • 五粮液董事长:茅台1935已脱离千元价位带,五粮液在千元价位已逐步摆脱其他竞品纠缠
  • “毛茸茸”的画,诗意、温暖又治愈
  • 讲座预告|全球贸易不确定情况下企业创新生态构建
  • 警惕“全网最低价”等宣传,市监总局和中消协发布直播消费提示
  • 人民日报整版调查:中小学春秋假,如何放得好推得开?
  • 经彩申城!上海网络大V沙龙活动走进闵行