首页 > 其他 > 详细

Container With Most Water

时间:2016-07-14 09:48:34      阅读:143      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!