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

相关文章:

  • 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 常用工具类大全:高频工具类及代码示例(后续继续补充)
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 220名“特朗普币”持有者花1.48亿美元,获邀与特朗普共进晚餐
  • 中国创面修复学科发起者之一陆树良教授病逝,享年64岁
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 董军同法国国防部长举行会谈
  • 区域国别学视域下的东亚文化交涉