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

Container With Most Water

时间:2016-07-14 09:50:04      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

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.

 Notice

You may not slant the container.

Example

Given [1,3,2], the max area of the container is 2.

Analysis:

Begin with the first point and last point, calculate the container area. Move the first point forward or last point backward if it is smaller.

 1 public class Solution {
 2     /**
 3      * @param heights: an array of integers
 4      * @return: an integer
 5      */
 6     public int maxArea(int[] height) {
 7         if (height == null || height.length <= 1) return 0;
 8         
 9         int max = 0;
10         int i = 0;
11         int j = height.length - 1;
12         while (i < j) {
13             if (max < Math.min(height[i], height[j]) * (j - i)) {
14                 max = Math.min(height[i], height[j]) * (j - i);
15             }
16             if (height[i] < height[j]) {
17                 i++;
18             } else {
19                 j--;
20             }
21         }
22         return max;
23     }
24 }

 

Container With Most Water

标签:

原文地址:http://www.cnblogs.com/beiyeqingteng/p/5669071.html

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