当前位置: 首页 > article >正文

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

目录

一、题目描述

二、解题思路

【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.kler.cn/a/558813.html

相关文章:

  • aardio - 计算器
  • C#前端开发面试题
  • VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更【使用deepseek生成的一篇文章】
  • python-leetcode-搜索二维矩阵 II
  • 8.日常英语笔记
  • 【Python量化金融实战】-第1章:Python量化金融概述:1.2 Python在量化金融中的优势与生态
  • 常用标准库之-std::reduce与std::execution::par
  • 关于雷龙CS SD NAND(贴片式TF卡)的测评体验
  • 算法1-2 排序(快排)
  • XML DOM4J 三、XPath
  • 单链表:数据结构中的灵活“链条”
  • 保姆级教程 | Office-Word中图目录制作及不显示图注引文的方法
  • 基于PSO粒子群优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
  • 《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师
  • VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器)的终极解决方案
  • Java实现斗地主-做牌以及对牌排序
  • Github 2025-02-23 php开源项目日报 Top9
  • 【JavaEE进阶】Spring MVC(3)
  • 使用django调用deepseek api,搭建ai网站
  • Java NIO与传统IO性能对比分析