Container with most water

来源:互联网 发布:js解析xml字符串 编辑:程序博客网 时间:2024/05/17 01:55

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);}
0 0