LeetCode题解——Container With Most Water

题目

x轴上有一些点,每个点上有一条与x轴垂直的线(线的下端就是这个点,不超出x轴),给出每条线的高度,求这些线与x轴组成的最大面积。

 

解法

贪心策略,维持两个指针,分别指向第一个和最后一个元素,对于其中小的一个,它所能围成的最大面积就是到另一个元素之间,所以小的一个要往中间走一步。

 

代码

 1 class Solution {
 2 public:
 3     int maxArea(vector<int> &height) {  //O(n)
 4         int result = 0, cap;    //cap是当前所围成的面积
 5         int start = 0, end = height.size() - 1;
 6 
 7         while(start < end)
 8         {
 9             cap = min(height[start], height[end]) * (end - start);  //当前的面积,其高度由小的一个决定
10             result = max(result, cap);
11             if(height[start] >= height[end])   //小的那个指针往中间移动
12                 --end;
13             else
14                 ++start;
15         }
16         return result;
17     }
18 };

 

posted @ 2014-06-03 12:28  阿杰的专栏  阅读(121)  评论(0编辑  收藏  举报