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

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.xdnf.cn/news/5177.html

相关文章:

  • 基于扩展卡尔曼滤波(EKF)目标轨迹算法仿真实例
  • 五一旅游潮涌:数字化如何驱动智慧旅游升级
  • IP协议.
  • GUC并发编程和SpringCloud,二者之间的关系
  • MySQL核心内容【持续更新中】
  • Linux——MySQL基础
  • SSH(安全外壳协议)
  • O2OA(翱途)开发平台系统安全-用户登录IP限制
  • 从RR到RC:解析大厂数据库隔离级别变革的背后逻辑
  • ‌2.4G芯片无晶振方案的技术影响分析
  • istio in action之流量控制与路由
  • 深入理解 Istio v1.25.2
  • 后缀表达式+栈(详解)(c++)
  • 自由学习记录(59)
  • WHAT - Node vs Python 执行速度
  • 如何把win10 wsl的安装目录从c盘迁移到d盘
  • DevExpressWinForms-布局容器之PanelControl
  • Linux服务:Nginx服务重写功能
  • 不同渲染任务,用CPU还是GPU?
  • 什么是项目管理的经营思维本质,怎样将其应用于项目实践
  • 解锁健康养生新境界
  • 【RAG】Milvus、Pinecone、PgVector向量数据库索引参数优化
  • UI设计公司兰亭妙微分享:汽车 MHI 设计的界面布局创新法则
  • Ubuntu 第11章 网络管理_常用的网络配置命令
  • 第三节第二部分:Static修饰方法应用场景
  • windows配置pcl
  • 【计算机主板架构】ATX架构
  • 【IC】voltage droop
  • MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
  • 深入理解 Linux 虚拟文件系统(VFS)