您的位置:首页 > 大数据 > 人工智能

*Trap Rain Water

2015-10-30 02:12 405 查看
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
.



The above elevation map 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. Thanks Marcos for contributing this image!

public class Solution {
public int trap(int[] height)
{
int len = height.length;
if(len<=2)return 0;
int maxIndex = -1;
int maxHgt = Integer.MIN_VALUE;
for (int i=0;i<len;i++)
{
if(height[i]>maxHgt)
{
maxHgt = height[i];
maxIndex = i;
}
}

int leftMax = height[0];
int rightMax = height[len-1];
int water = 0;

for (int i=1;i<maxIndex;i++)
{
if(height[i]<leftMax)
{
water += leftMax - height [i];
}
else
{
leftMax = height[i];
}

}

for(int i=len-2;i>maxIndex;i--)
{
if(height[i]<rightMax)
{
water += rightMax - height [i];
}
else
{
rightMax = height[i];
}

}

return water;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: