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

Container with most water

2015-06-17 20:28 537 查看
Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container.

很简单的一道题,只要理解 container =(min(a[i],a[j])*(j - i );如果从二头进行轮询,那么要比以前的值大,就必须 a[x] >min(a[i],a[j])了.

代码:

int maxArea(int* height, int heightSize) {
int i = 0;
int j = heightSize - 1;
int max=0 ;
int tem =height[i] ;
int container_tem = 0;
int container_high = 0;
while(i < j)
{
if( height[i]>= height[j])
{container_high = height[j];
tem =height[j];
container_tem = container_high*(j -i);
max = max > container_tem?max : container_tem;
while(height[--j] <tem && i < j)
;
continue;
}else if( height[i] < height[j])
{
container_high = height[i];
tem =height[i];
container_tem = container_high*(j -i);
max = max > container_tem?max : container_tem;
while(height[++i] <tem && i < j)
;
continue;
}
}
return(max);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: