您的位置:首页 > 移动开发

42. Trapping Rain Water

2016-06-05 19:31 246 查看
题目:https://leetcode.com/problems/trapping-rain-water/

代码:

public class Solution {
public int trap(int[] height) {
int i=0,j,m;
int res = 0;
while(i<height.length)
{
j = higher(height,i);
if(j==-1)
{
m = i;
i = nexthigh(height,i);
if(i==-1)
break;
res += height[i]*(i-m-1);
for(int n=m+1;n<i;n++)
res -= height
;
continue;
}
res += (j-i-1)*Math.min(height[j],height[i]);
for(int temp=i+1;temp<j;temp++)
res -= height[temp];
i = j;
}
return res;
}

public int higher(int[] height,int i)
{
int flag = height[i];
for(int j=i+1;j<height.length;j++)
{
if(height[j]>=flag)
return j;
}
return -1;
}

public int nexthigh(int[] height,int i)
{
int res = i+1;
if(res==height.length)
return -1;
for(int j=i+1;j<height.length;j++)
{
if(height[j]>height[res])
res = j;
}

4000
return res;
}
}
2ms

基本思路:高柱子和高柱子之间夹击,之后在剩下的数组值中找最高夹击
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: