11. 盛最多水的容器
题目链接
这道题暴力求解时间复杂度为O(N2), 提交会超时。
实际上如果做题熟练看到此题需要数组中的两个值,可以很快想到用双指针,双指针是此题目前的最优解法。
C++:
class Solution {
public:
int maxArea(vector<int>& height) {
int max = 0;
int left = 0, right = height.size()-1;
while(left < right)
{
int r = right-left;
if(height[left] < height[right])
{
r *= height[left];
left++;
}
else {r *= height[right]; right--;}
max = max > r? max:r;
}
return max;
}
};
python:
class Solution:
def maxArea(self, height: List[int]) -> int:
max = 0
left = 0
right = len(height)-1
while left < right:
r = right - left
if height[left] < height[right]:
r *= height[left]
left += 1
else:
r *= height[right]
right -= 1
max = max if r < max else r
return max
如果对你有帮助的话,请点个赞哦!