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

 

你可能感兴趣的:(LeetCode)