码迷,mamicode.com
首页 > 其他好文 > 详细

Container With Most Water

时间:2014-12-31 20:13:44      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

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


Container With Most Water

标签:

原文地址:http://blog.csdn.net/uj_mosquito/article/details/42297795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!