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

Container With Most Water

2014-12-31 18:01 281 查看
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.

#include<stdlib.h>
#include<stdio.h>

int maxArea(int height[], int n) {
int i = 0, j = n-1, li ,lj;
int max = 0, water;
while(j > i) {
water = (j - i) * ((height[i] < height[j])?height[i]:height[j]);
//printf("i:%d,j:%d,water:%d\n",i, j, water);
if(water > max) max = water;
li = height[i];
lj = height[j];
if(lj < li) while(height[j] <= lj && j > i) j--;
else while(height[i] <= li && j > i) i++;
}
return max;
}

void main() {
int a[] = {2, 3, 4, 1};
int n = 4;
printf("%d\n", maxArea(a, n));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: