42. 接雨水(Java)

目录

题目描述:

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

输入:

bash 复制代码
height = [0,1,0,2,1,0,1,3,2,1,2,1]

输出:

bash 复制代码
6

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

代码实现:

java 复制代码
class Solution {
    public int trap(int[] height) {
        int left = 0;// 左指针
        int right = height.length - 1;// 右指针
        int leftHigh = 0;// 左边界高度
        int rightHigh = 0;// 右边界高度
        int sum = 0;// 最终雨水总量
        // 左右指针同时向数组中间遍历
        while (left < right) {// 当左指针等于右指针时,跳出循环
            leftHigh = Math.max(height[left], leftHigh);// 获取左边界最大高度
            rightHigh = Math.max(height[right], rightHigh);// 获取右边界最大高度
            if (height[left] < height[right]) {
                // 当右方高度大于左方高度时,计算左方水坑区域雨水数
                sum += (leftHigh - height[left]);// 累加:左边界减去当前深度
                left++;// 左指针左移
            } else {
                // 其他情况,计算右方水坑区域雨水数
                sum += (rightHigh - height[right]);// 累加:右边界减去当前深度
                right--;// 右指针右移
            }
        }
        return sum;// 返回结果
    }
}
相关推荐
风起云涌~1 分钟前
【Android】kotlin.flow简介
android·开发语言·kotlin
楼田莉子10 分钟前
C++学习:C++类型转换专栏
开发语言·c++·学习
龙茶清欢12 分钟前
1、Lombok入门与环境配置:理解Lombok作用、配置IDE与构建工具
java·spring boot·spring cloud
David WangYang25 分钟前
便宜的自制 30 MHz - 6 GHz 矢量网络分析仪
开发语言·网络·php
龙茶清欢29 分钟前
2、Nginx 与 Spring Cloud Gateway 详细对比:定位、场景与分工
java·运维·spring boot·nginx·spring cloud·gateway
Eoch7731 分钟前
HashMap夺命十连问,你能撑到第几轮?
java·后端
云动雨颤36 分钟前
程序出错瞎找?教你写“会说话”的错误日志,秒定位原因
java·运维·php
魔芋红茶38 分钟前
RuoYi 学习笔记 3:二次开发
java·笔记·学习
杨杨杨大侠42 分钟前
Atlas Mapper 教程系列 (8/10):性能优化与最佳实践
java·spring boot·spring·性能优化·架构·系统架构
yinke小琪1 小时前
线程池七宗罪:你以为的优化其实是在埋雷
java·后端·面试