首页 > 其他 > 详细

LeetCode: Container With Most Water 题解

时间:2014-06-07 23:03:56      阅读:341      评论: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.

贪心策略:两端设置围栏,无论如何注水,水只要不超过其中较短的那一根围栏即可,中间的柱子可以忽略。

相继缩短距离,较短一端的柱子换成向里的一根。

例如: height[left] <= height[right] :  left = left+1;

        反之, right = right-1;

bubuko.com,布布扣
 1 class Solution {
 2 public:
 3     int maxArea(vector<int> &height) {
 4         int ans=0,left=0,right=height.size()-1,contain;
 5         while(left<right)
 6         {
 7             contain = (right-left)*min(height[right],height[left]);
 8             ans = max(contain, ans);
 9             height[left]<=height[right]?left++:right--;
10         }
11         return ans;        
12     }
13 };
bubuko.com,布布扣

LeetCode: Container With Most Water 题解,布布扣,bubuko.com

LeetCode: Container With Most Water 题解

原文:http://www.cnblogs.com/double-win/p/3774781.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!