首页 > 其他分享 >力扣第四十二题 接雨水(困难难度,c语言附着解析)

力扣第四十二题 接雨水(困难难度,c语言附着解析)

时间:2024-12-25 21:56:17浏览次数:6  
标签:递增 高度 height 力扣 lmax 解析 第四十二 我们 单调

请添加图片描述

代码如下请添加图片描述
这个代码是双指针算法,我参考了别人的解法,大致的思路如下,我们先使用两个指针,分别从数组开始和末尾开始遍历,并且我们使用了两个变量,分别记录当前我们遍历到的左边和右边遇到的最大高度。

这里为什么要进行height[l]小于或大于的判断再进行相加,根据木桶效应,我们需要知道哪一个高度是比较小的,如果是左边小,那么我们就以左边的高度来进行计算,反之亦然。

可能会有人疑惑,如果出现一直单调递增或递减的高度那会怎么样,如果是单调递增的高度,那我们的lmax就一直是当下我们所指向的数组的值,这时lmax-height[l++]就为0了,sum的值不会变,只有当不是单调递增或者递减时我们这时才会进行积水,sum这时才会相加。

标签:递增,高度,height,力扣,lmax,解析,第四十二,我们,单调
From: https://blog.csdn.net/2401_85637543/article/details/144725351

相关文章

  • R数据分析:工具变量回归的做法和解释,实例解析
    前几天看了个视频,是2024年诺贝尔经济学奖得主在分享自己的研究,研究问题是“制度如何形成并影响经济繁荣”,在研究这个问题的时候他的PPT中提到研究的统计过程中用到了工具变量,想着再次大家介绍一下这个方法。说不定利用这个方法,哪天我的读者里面也出个诺贝尔奖得主呢,哈哈哈。想象......
  • AppAgent 源码 (xml 解析)
    1.数据准备adbshelluiautomatordump/sdcard/output.xml#获取手机ui界面的xml文件adbpull/sdcard/output.xmloutput.xml #将手机上的xml文件拉取到电脑上具体的xml文件:<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?><hierarchyrotati......
  • Java中SPI机制原理解析
    使用SPI机制前后的代码变化加载MySQL对JDBC的Driver接口实现在未使用SPI机制之前,使用JDBC操作数据库的时候,一般会写如下的代码://通过这行代码手动加载MySql对Driver接口的实现类Class.forName("com.mysql.jdbc.Driver")DriverManager.getConnection("jdbc:mysql://127.0.0.1......
  • Java 线程池深入剖析:核心概念、源码解析与实战应用
    线程池是现代多线程编程中的重要工具,它能显著提升任务处理效率并优化系统资源。本文将全面解析Java中的线程池机制,帮助开发者深入了解线程池的工作原理、实现方式及其最佳实践。一、基础概念1.什么是线程池?线程池是一种用于管理和复用线程资源的高效工具,能够在程序中......
  • Java 泛型详细解析
    泛型的定义泛型类的定义下面定义了一个泛型类Pair,它有一个泛型参数T。publicclassPair<T>{ privateTstart; privateTend;}实际使用的时候就可以给这个T指定任何实际的类型,比如下面所示,就指定了实际类型为LocalDate,泛型给了我们一个错觉就是通过个这个模板类P......
  • 透视网络世界:计算机网络习题的深度解析与总结【后2章】
    ​第四章4-04试简单说明下列协议的作用:IP,ARP,RARP和ICMP。IP协议:实现网络互连。使参与互连的性能各异的网络从用户看起来好像是一个统一的网络。网际协议IP是TCP/IP体系中两个最主要的协议之一,与IP协议配套使用的还有四个协议。ARP协议:是解决同一个局域网上的主机或路由......
  • 缺失anav.dll文件的原因及解决方法:深入解析与实用指南
     anav.dll文件的作用anav.dll是一个动态链接库文件,它通常与特定的软件应用程序相关联,用于提供某些特定的功能或服务。尽管它不是Windows操作系统的核心组件,但在某些应用程序中,anav.dll可能扮演着至关重要的角色。一旦这个文件缺失,相关的应用程序可能无法正常启动或运行,从而......
  • 一个GLSL Shader的格式化算法(LALR解析器)
    一个GLSLShader的格式化算法(LALR解析器)在进行OpenGL程序开发时,我需要自行解析`string`类型的Shader代码,抽取出里面的某些变量名和subroutine名。由于找不到可用的GLSLShader解析器,就照着虎书(《现代编译原理-c语言描述》)自己写了个LALRGenerator,实际上包含了(词法分析器+语法......
  • 【开源-详解】基于51单片机的智能闹钟设计 - 第二节 - 硬件连接与模块函数解析
    51单片机智能闹钟--硬件连接与模块函数解析硬件准备:模块函数解析OLED驱动模块(调用部分)DHT11温湿度传感器(调用部分)DS1302时钟模块(调用部分)蜂鸣器模块(此处是无源蜂鸣器)空气质量检测模块(DO)按键模块小节总结硬件准备:使用到的模块:–DHT11温湿度传感器x1–MQ135空气......
  • AI 代码生成:原理、应用、局限与未来趋势全解析
    一、AI写代码的原理基于深度学习的代码生成:深度学习模型(如GPT系列)通过大规模代码数据集训练,将代码视为一种序列数据。在训练过程中,它们会学习代码中的各种模式和规律,包括但不限于编程语言的语法规则、不同代码结构的组合方式、代码块之间的依赖关系以及各种函数和库的使用......