首页 > 编程语言 >力扣42 接雨水 Java版本

力扣42 接雨水 Java版本

时间:2024-09-19 20:19:25浏览次数:16  
标签:right Java min int max 42 height 力扣 length

文章目录


题目描述

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:
在这里插入图片描述

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

n == height.length
1 <= n <= 2 * 104
0 <= height[i] <= 105

代码1

class Solution {
    public int trap(int[] height) {
        int sum = 0;
        //动态规划数组记录下来当前位置的左边最高的墙和右边最高的墙
        int[] left_max = new int[height.length];
        int[] right_max = new int[height.length];
        //两个for循环是为了找当当前i的左右两边最高的墙
        for (int i = 1; i < height.length - 1; i++) {
            left_max[i] = Math.max(left_max[i-1],height[i-1]);
        }
        for (int i = height.length-2; i > 0; i--) {
            right_max[i] = Math.max(right_max[i+1],height[i+1]);
        }
        //如果当前位置的墙比两边的墙都矮的话,当前墙的高度与矮的那一方的墙的高度差就是当前墙上面可以存的水量
        for (int i = 1; i < height.length - 1; i++) {
            int min = Math.min(left_max[i],right_max[i] );
            if (min>height[i]){
                sum = sum+(min-height[i]);
            }
        }
        return sum;
    }
}

标签:right,Java,min,int,max,42,height,力扣,length
From: https://blog.csdn.net/m0_47066863/article/details/142367512

相关文章

  • centos789手动无脑用sh脚本安装Java8
    #老师给的文件是jdk1.8版本,所以我这边写的也是8的脚本输入命令:mkdir–p/export/data#放置相关的数据文件输入命令mkdir–p/export/servers#软件的安装目录输入命令:mkdir–p/export/software上传文件jdk-8u241-linux-x64.tar.gz到/export/software目录然后写一个安装......
  • java的二维数组
    二维数组的初始化 二维数组的进行for循环时的判断条件怎么确定的呢?  因为在二维数组是特殊的一维数组,c语言中二维数组首元素的代表的是地址,而首元素代表的是一组一维数组,计算首元素的长度也就是计算二维数组的行下标为0的一维数组的长度所以判断数组名的长度也就是判断......
  • centos789手动无脑用sh脚本安装Java8
    #老师给的文件是jdk1.8版本,所以我这边写的也是1.8的脚本输入命令:mkdir–p/export/data#放置相关的数据文件输入命令mkdir–p/export/servers#软件的安装目录输入命令:mkdir–p/export/software上传文件jdk-8u241-linux-x64.tar.gz到/export/software目录然后写一个安......
  • JAVA 序列化和反序列化
    序列化:把对象转换为字节序列的过程称为对象的序列化反序列化:把字节序列转换为对象的过程称为对象的反序列化对象序列化的作用1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中2)在网络上传送对象的字节序列ObjectOutputStream代表对象输出流,它的writeObject(Obje......
  • java pom两个模块需要互相引用怎么办
    在Maven项目中,如果两个模块需要互相引用,通常的做法是将它们放在同一个父项目下,并使用父项目的聚合功能来管理这些模块。这样做可以确保模块之间的依赖关系能够正确解析。项目结构假设你有两个模块module-a和module-b,它们需要互相引用。你可以创建一个父项目parent-project,并......
  • java识别是不是ajax请求
    在JavaWeb应用中,识别是否是一个AJAX请求通常可以通过检查HTTP请求头中的X-Requested-With头字段来实现。如果该字段的值为XMLHttpRequest,则可以认为这是一个AJAX请求。示例代码以下是一个示例,展示了如何在SpringMVC控制器中识别AJAX请求:1.SpringMVC控制器importorg.spring......
  • java-----方法引用
    方法引用:把已有的方法拿过来用,当做函数式接口中抽象方法的方法体方法引用符是::注意:    1.引用处必须是函数式接口    2.被引用的方法已经存在    3.被引用方法的形参和返回值需要跟抽象方法保持一致    4.被引用方法的功能要满足当前需......
  • JavaScript在数据可视化领域的探索与实践
    目录引言JavaScript可视化库概览D3.js基础入门1.引入D3.js2.绘制简单的条形图3.添加轴交互性与动画实际应用场景结论引言在数据驱动决策日益重要的今天,数据可视化成为连接数据与洞察的桥梁。JavaScript,作为前端开发的主力军,凭借其灵活性和丰富的库支持,在数据......
  • java计算机毕业设计少儿英语在线学习平台APP(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球化进程的加速和互联网技术的飞速发展,英语作为国际交流的重要工具,其教育需求在少儿群体中日益凸显。传统线下英语教育模式受限于时间、地点及......
  • JavaSE——多线程基础
    概述        现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时允许多个任务。例如:播放音乐的同时,浏览器可以进行文件下载,同时可以进行QQ消息的收发。    CPU执行代码都是一条一条顺序执行的,但是,即使是单核CPU,也可以同时运行多个任务。因为操......