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

【面试题】接雨水

接雨水

仅学习

一、问题描述

在这里插入图片描述

二、解调思路

这个问题是一个典型的双指针问题,也称为"接雨水问题"。我们可以通过遍历数组两次来解决这个问题:一次从左到右,一次从右到左,分别记录每个位置左边和右边的最大高度。然后,可以计算每个柱子能够接住的雨水量,即两边较小的最大高度减去当前柱子的高度,如果这个值大于0,则表示可以接住雨水。

三、代码

def trap(height):if not height:return 0n = len(height)left_max = [0] * nright_max = [0] * nwater_trapped = 0# 从左到右找到每个位置左边的最大高度left_max[0] = height[0]for i in range(1, n):left_max[i] = max(left_max[i - 1], height[i])# 从右到左找到每个位置右边的最大高度right_max[n - 1] = height[n - 1]for i in range(n - 2, -1, -1):right_max[i] = max(right_max[i + 1], height[i])# 计算雨水量for i in range(n):water_trapped += min(left_max[i], right_max[i]) - height[i]return water_trapped# 示例
print(trap([0,1,0,2,1,0,1,3,2,1,2,1]))  # 输出:6
print(trap([4,2,0,3,2,5]))  # 输出:9

这段代码首先定义了一个函数trap,它接受一个表示柱子高度的列表。然后,使用两个数组left_max和right_max来分别存储每个位置左边和右边的最大高度。接着,遍历这个列表两次,一次从左到右,一次从右到左,填充这两个数组。最后,遍历原始的height列表,计算每个位置能够接住的雨水量,并将它们累加起来得到最终的结果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • WPF 数据模板DataTemplate、控件模板ControlTemplate、Style、ItemsPreseter
  • jenkins 安装以及自动构建maven项目并且运行
  • thinkphp漏洞之sql注入漏洞-builder处漏洞
  • wiota窄带通讯技术对于vu传统lora
  • [cvpr 2024 目标检测 前沿研究 热点] cpvr 2024中与目标检测主题有关的论文
  • 【无标题】第九章 从 Web 客户端指定自定义传输
  • 钢板现货:A572Gr60和SA572Gr60材质分析、A572Gr60和SA572Gr60简介
  • fetch 在实际项目中的思考
  • 2024华为OD机试真题- 求字符串中所有整数的最小和-(C++/Python)-C卷D卷-100分
  • 中国联通在国外最大的综合电信服务枢纽
  • 【算法模板】数据结构:单调栈
  • vue2和vue3项目使用signalr插件,前后端如何配合的
  • 大语言模型有什么用途?
  • 计算机网络17——IM聊天系统——客户端核心处理类框架搭建
  • XV6——锁与并发
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Android交互
  • Docker入门(二) - Dockerfile
  • hadoop集群管理系统搭建规划说明
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • jQuery(一)
  • Just for fun——迅速写完快速排序
  • nginx 配置多 域名 + 多 https
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 安卓应用性能调试和优化经验分享
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于axios的vue插件,让http请求更简单
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 用简单代码看卷积组块发展
  • mysql面试题分组并合并列
  • 湖北分布式智能数据采集方法有哪些?
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #define
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (Forward) Music Player: From UI Proposal to Code
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (五)activiti-modeler 编辑器初步优化
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)setTimeout 和 setInterval 的区别
  • (转)树状数组
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .net core 控制台应用程序读取配置文件app.config
  • .NET delegate 委托 、 Event 事件
  • .Net FrameWork总结
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net MySql