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

leetcode 42. 接雨水

42.接雨水

下面是解法:
1.分别从两个方向遍历,数组存储遍历过程中的最大值
2.再次遍历数组,根据木桶原理,取min(left max,right max)和当前高度做对比
(这里可以只用一个数组,还有优化空间)

func trap(nums []int) int {
    n := len(nums) // 获取长度
    lmx := make([]int,n) // 左边遍历, 存储max数组
    rmx := make([]int,n) // 右边遍历, 存储max数组
    res :=0 
    for i:=0;i<n;i++ {
        if i>0 {
            lmx[i] = max(lmx[i-1],nums[i])
        }else{
            lmx[i]=nums[i]
        }
    }

    for i:=n-1;i>=0;i-- {
        if i < n-1 {
            rmx[i]=max(rmx[i+1],nums[i])
        }else{
            rmx[i]=nums[i]
        }
    }


    for i:=0;i<n;i++ {
        mi := min(rmx[i],lmx[i])
        if mi > nums[i]{
            res += mi-nums[i]
        }
    }
    return res 
}
http://www.dtcms.com/a/71468.html

相关文章:

  • AD画板学习
  • [JAVASE] Collection集合的遍历
  • MySQL常用函数详解及SQL代码示例
  • Vue 的 v-if 和 v-else-if 如何使用?
  • 信奥赛CSP-J复赛集训(模拟算法专题)(16):P6386 [COCI 2007/2008 #4] VAUVAU
  • DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)
  • mybatismybatis-plus
  • Spring Boot 3.x 中 @NotNull 与 @NonNull 的深度解析
  • 三分钟掌握视频剪辑 | 在 Rust 中优雅地集成 FFmpeg
  • 天梯赛-前世档案 二进制的巧妙使用
  • Java基础语法练习43(线程)
  • vue3+vite+ts+router4+Pinia+Axios+sass 从0到1搭建
  • linux-5.10.110内核源码分析 - bcm2711 SATA驱动(AHCI)
  • linux 源码编译安装
  • 基于Babylon.js的Shader入门二(让Shader使用一个纹理)
  • Mybatis批量操作
  • 前端知识点---原型-原型链(javascript)
  • 【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)
  • matlab 模糊pid实现温度控制
  • Java 常用工具类大全:高频工具类及代码示例(后续继续补充)
  • 大模型最新面试题系列:微调篇之微调基础知识
  • 使用 Elasticsearch 构建多模式 RAG 系统:哥谭市的故事
  • 【SpringMVC】常用注解:@MatrixVariable
  • C 语言实战:打造字符串加密器及实验要点解析
  • leetcode 3305. 元音辅音字符串计数 I 中等
  • Ubuntu从源代码编译安装QT
  • Git 的基本概念和使用方式
  • 网络安全就业形势
  • AGI大模型(6):提示词模型进阶
  • 【软考-架构】11.3、设计模式-新