leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode
题目:
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

上面是由数组 [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
思路一:
从头开始循环,每次找到<=height[i]的数(没找到,则使用次高点计算),去掉中间的高度,剩下的就是这块区域(i~next)的大小,然后i=next继续
思路二(和盛最多的水类似):
双指针法:因为积水总是受到叫低的一端影响,所以可以每次将较低的指针朝着较高的一方移动,会到更高的就停止,将较低的指针移动,每次统计当前块的积水量
代码:
#if 0
//思路一:从头开始循环,每次找到<=height[i]的数(没找到,则使用次高点计算),去掉中间的高度,剩下的就是这块区域(i~next)的大小,然后i=next继续
class Solution {
public:
int trap(vector<int>& height) {
int i = 0, j = 0, second_h = 0;
int next;

这篇博客详细介绍了LeetCode中的C++算法问题——接雨水。通过分析给定的非负整数数组高度图,解释了如何计算下雨后柱子能接住的雨水总量。提供了两种解题思路,包括从头开始循环寻找合适高度和双指针法,并给出了具体的代码实现。
最低0.47元/天 解锁文章
1558

被折叠的 条评论
为什么被折叠?



