LeetCode【42. 接雨水】

我不喜欢等人,也不喜欢被别人等

给定 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

通过次数773.8K提交次数1.2M通过率63.1%

接雨水问题的解决方案,同样采用双指针法

java 复制代码
public int trap(int[] height) {
    int left = 0;
    int right = height.length - 1;
    int leftMax = 0;
    int rightMax = 0;
    int result = 0;

    while (left < right) {
        if (height[left] < height[right]) {
            if (height[left] >= leftMax) {
                leftMax = height[left];
            } else {
                result += leftMax - height[left];
            }
            left++;
        } else {
            if (height[right] >= rightMax) {
                rightMax = height[right];
            } else {
                result += rightMax - height[right];
            }
            right--;
        }
    }

    return result;
}
相关推荐
阿巴斯甜2 分钟前
userList.stream().sorted((u1, u2) -> u2.getAge() - u1.getAge()); 怎么判断是升序还是降序?
java
小松加哲2 分钟前
AspectJ编译期织入实战
java·开发语言
鲸渔3 分钟前
【C++ 跳转语句】break、continue、goto 与 return
开发语言·c++·算法
AI科技星3 分钟前
基于螺旋元逻辑的宇宙统一场论底层公理构建(乖乖数学)
算法·机器学习·数学建模·数据挖掘·量子计算
贺小涛5 分钟前
python和golang进程、线程、协程区别
java·python·golang
Seven9716 分钟前
Tomcat的架构设计和启动过程详解
java
Mr-Wanter17 分钟前
踩坑记录:IDEA 启动服务连续三次 OOM 内存溢出完整解决
java·ide·intellij-idea·oom
阿巴斯甜20 分钟前
User::getName含义?
java
qiqsevenqiqiqiqi27 分钟前
MC0550鱼肠剑试锋芒
数据结构·算法
2601_9498180927 分钟前
SpringBoot项目集成ONLYOFFICE
java·spring boot·后端