Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
代码如下:
public int trap(int[] height) {
if (height == null || height.length == 0) {
return 0;
}
int left = 0, right = height.length - 1;
int trap = 0, leftMax = 0, rightMax = 0;
while (left < right) {
leftMax = Math.max(leftMax, height[left]);
rightMax = Math.max(rightMax, height[right]);
if (height[left] < height[right]) {
trap += leftMax - height[left++];
} else {
trap += rightMax - height[right--];
}
}
return trap;
}
呼。。。打完收工
本文介绍了一个经典的算法问题——雨水收集。通过给定的高度数组来计算能够收集多少雨水。使用双指针技巧,从两端向中间逼近,同时维护左右两边的最大高度。
633

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



