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