首页 > 其他分享 >LeetCode_0042. 接雨水

LeetCode_0042. 接雨水

时间:2023-11-09 11:45:25浏览次数:34  
标签:柱子 end int 0042 雨水 height volume start LeetCode

题目描述

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

示例

示例 1:

image

输入: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

题目解答

class Solution {
    public int trap(int[] height) {
        int start = 0, end = height.length - 1, i = start, j = end;
        int volume = 0;
        while (i < j) {
            //如果当前位置的柱子高度小于最后柱子的位置高度
            if (height[i] < height[j]) {
                //累计柱子间柱子间的雨水
                if (height[++i] < height[start]) {
                    volume += height[start] - height[i];
                } else {
                    start = i;
                }
            } else {
                if (height[--j] < height[end]) {
                    volume += height[end] - height[j];
                } else {
                    end = j;
                }
            }
        }
        return volume;
    }
}

标签:柱子,end,int,0042,雨水,height,volume,start,LeetCode
From: https://www.cnblogs.com/fcloud/p/17819344.html

相关文章

  • LeetCode222.完全二叉树的节点个数
    题目描述给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~2h个节点。示例提交的代......
  • [Leetcode] 0118. 杨辉三角
    118.杨辉三角题目描述给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例1:输入:numRows=5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入:numRows=1输出:[[1]] 提......
  • LeetCode 精选100题-70题爬楼梯
    题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?思路:第一阶楼梯:n=1,有一种方法f(1)=1;第二阶楼梯:n=2,有两种方法f(2)=2;当我们第一步爬了1个台阶时,我们可以有f(n-1)种方法爬到楼顶;当我们第一步爬了2......
  • 7.接雨水
    题目概述:给定一些柱子的高度,问这些柱子能够接到多少雨水解题思路:将每个位置都想象有一个木桶,接到雨水的量=木桶体积-柱子体积。木桶的高度由前后缀数组中的较小者决定时间复杂度:\(O(n)\)代码:classSolution{publicinttrap(int[]height){intn=height.len......
  • LeetCode/在树上执行操作以后得到的最大分数
    有一棵n个节点的无向树,节点编号为0到n-1,根节点编号为0。给你一个长度为n-1的二维整数数组edges表示这棵树,其中edges[i]=[ai,bi]表示树中节点ai和bi有一条边。同时给你一个长度为n下标从0开始的整数数组values,其中values[i]表示第i个节点的值......
  • LeetCode101.对称二叉树
    题目描述给你一个二叉树的根节点root,检查它是否轴对称。示例提条的代码importjava.util.List;importjava.util.ArrayList;importjava.util.Deque;importjava.util.LinkedList;importjava.util.Collections;classSolution{publicbooleanisSymmetric(Tr......
  • [LeetCode] 1535. Find the Winner of an Array Game
    Givenanintegerarrayarrofdistinctintegersandanintegerk.Agamewillbeplayedbetweenthefirsttwoelementsofthearray(i.e.arr[0]andarr[1]).Ineachroundofthegame,wecomparearr[0]witharr[1],thelargerintegerwinsandremainsat......
  • leetcode 第一题 两数之和
    题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 初级阶段Java ......
  • [LeetCode] 2149. Rearrange Array Elements by Sign
    Youaregivena0-indexedintegerarraynumsofevenlengthconsistingofanequalnumberofpositiveandnegativeintegers.Youshouldrearrangetheelementsofnumssuchthatthemodifiedarrayfollowsthegivenconditions:Everyconsecutivepairofint......
  • 11月LeetCode每日一题: 117. 填充每个节点的下一个右侧节点指针 II
    题目描述:给定一个二叉树:structNode{intval;Node*left;Node*right;Node*next;}填充它的每个next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将next指针设置为 NULL 。初始状态下,所有 next指针都被设置为 NULL 。 考察......