int trap(int A[], int n) {
if (n == 0) return 0;
int l = 0, r = n - 1;
int lv = A[l], rv = A[r];
int total = A[l] + A[r], rainTotal = total;
while (l != r)
{
if (A[l] < A[r])
{
l++;
total += A[l];
lv = max(lv, A[l]);
rainTotal += lv;
}
else
{
r--;
total += A[r];
rv = max(rv, A[r]);
rainTotal += rv;
}
}
return rainTotal - total;
}Trapping Rain Water[leetcode]
最新推荐文章于 2021-12-08 09:28:45 发布
本文介绍了一种计算二维数组中能够捕获雨水总量的算法。通过从两端开始遍历并维护两个指针,分别指向当前左右侧最高柱子的高度,最终得出能容纳的最大雨水量。
395

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



