Container With Most Water

来源:互联网 发布:iphone铃声下载软件 编辑:程序博客网 时间:2024/05/29 12:23

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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));}


0 0
原创粉丝点击