Leetcode-42. Trapping Rain Water [C++][Java]

news/2025/2/24 10:57:44

目录

一、题目描述

二、解题思路

【C++】

【Java】


Leetcode-42. Trapping Rain Waterhttps://leetcode.com/problems/trapping-rain-water/description/

一、题目描述

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.

Example 1:

Input: height = [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Explanation: The above elevation map (black section) is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped.

Example 2:

Input: height = [4,2,0,3,2,5]
Output: 9

Constraints:

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

二、解题思路

【C++】

class Solution {
public:
    int trap(vector<int>& height) {
        if (height.size() == 0) {
            return 0;
        }
        int left = 0, right = height.size() - 1;
        int leftMax = height[left], rightMax = height[right], res = 0;
        while (left < right) {
            if (height[left] < height[right]) {
                res += leftMax - height[left++];
                leftMax = max(leftMax, height[left]);
            } else {
                res += rightMax - height[right--];
                rightMax = max(rightMax, height[right]);
            }
        }
        return res;
    }
};

【Java】

class Solution {
    public int trap(int[] height) {
        if (height == null || height.length == 0) {
            return 0;
        }
        int left = 0, right = height.length - 1;
        int leftMax = height[left], rightMax = height[right], res = 0;
        while (left < right) {
            if (height[left] < height[right]) {
                res += leftMax - height[left++];
                leftMax = Math.max(leftMax, height[left]);
            } else {
                res += rightMax - height[right--];
                rightMax = Math.max(rightMax, height[right]);
            }
        }
        return res;
    }
}


http://www.niftyadmin.cn/n/5864241.html

相关文章

每天五分钟深度学习pytorch:使用Inception模块搭建GoogLeNet模型

本文重点 前面我们学习了Incetption模块,它的作用类似于vgg块对于VGG网络模型一样,本文我们使用Inception搭建GoogLeNet网络,如果使用卷积层开始从头开始搭建GoogleNet,那么这样看起来会很不清晰,我们使用已经封装好的Inception来搭建GoogLeNet网络 关键点 关键点在于I…

想学python进来看看把

目录 什么是python 我将列举python与其他几种编程语言的对比 Python vs Java Python vs JavaScript Python vs C​编辑 我将列举代码示例帮大家来理解 python c/c java 写一个python程序 你一定要知道什么是BUG呦 遇到bug怎么办 1. 保持冷静 2. 重现 Bug 3. 阅…

RabbitMQ学习—day6—springboot整合

目录 1. springboot配置 2. 开始写RabbitMq代码 3. 队列优化 4. 插件实现延迟队列 5. 总结 前一小节我们介绍了死信队列&#xff0c;刚刚又介绍了 TTL&#xff0c;至此利用 RabbitMQ 实现延时队列的两大要素已经集齐&#xff0c;接下来只需要将它们进行融合&#xff0c;再加…

信息学奥赛一本通1005题解

数学好的朋友们应该都知道&#xff0c;这是一道数学题&#xff0c;绝对不是什么算法题&#xff0c;我们看原题&#xff1a; 假设地球上的新生资源按恒定速度增长。照此测算&#xff0c;地球上现有资源加上新生资源可供&#x1d465;亿人生活&#x1d44e;年&#xff0c;或供&a…

更改visual studio 2022 默认NuGet包路径

本文章仅提供更改用户级别的NuGet包默认路径的更改&#xff0c;电脑级别的更改需要更改%ProgramData%\NuGet\Config\machine.config&#xff0c; 而且需要管理员权限&#xff0c;但是更改内容类似用户级别的NuGet更改。 1. 关闭VS 2. 打开NuGet配置文件路径 可通过以下两种方…

Linux 命令大全完整版(05)

2. Linux 系统设置命令 export 功能说明&#xff1a;设置或显示环境变量。语  法&#xff1a;export [-fnp][变量名称][变量设置值]补充说明&#xff1a;在 shell 中执行程序时&#xff0c;shell 会提供一组环境变量。export 可新增、修改或删除环境变量&#xff0c;供后续…

从Excel到Hadoop:数据规模的进化之路

从Excel到Hadoop&#xff1a;数据规模的进化之路 在数字时代&#xff0c;数据就像空气&#xff0c;充斥在我们生活的每个角落。今天我们谈"大数据"&#xff0c;但回头看看&#xff0c;数据的演变经历了从"小数据"到"大数据"的量变到质变的过程。…

解锁策略模式:Java 实战与应用全景解析

系列文章目录 后续补充~~~ 文章目录 一、策略模式&#xff1a;概念与原理1.1 定义与概念1.2 结构组成1.3 与其他模式的区别 二、策略模式的优势与适用场景2.1 优势剖析2.2 适用场景 三、Java 代码示例解析3.1 场景设定3.2 代码实现3.3 代码解析 四、策略模式在实际项目中的应用…