力扣 11题 盛最多水的容器
作者:互联网
Question 11-container with most water
解题思路
在开始做题之前,我们首先回忆两条定理:
- 当长方形的底边相同时,其面积与高成正比
- 当一个矩形的面积一定时,其底边越短,其高越长
再来分析这道题:
- 列表头地址为头指针,列表尾地址为尾指针
- 头指针和尾指针指向的值中,较小的为矩形的高
- 由 1、2 可得:面积 = (尾指针 - 头指针)* 高
- 由定理 1、2 可得:当缩短头指针和尾指针间距离(|头指针 - 尾指针|)时,应当是指向高的那个指针向另一个指针靠拢。
代码
class Solution {
public int maxArea(int[] height) {
int maxArea = 0;
int leftBorder = 0;
int rightBorder = height.length - 1;
while (leftBorder < rightBorder) {
if (height[leftBorder] < height[rightBorder]) {
maxArea = Math.max(maxArea, (rightBorder - leftBorder) * (height[leftBorder]));
leftBorder ++;
} else {
maxArea = Math.max(maxArea, (rightBorder - leftBorder) * (height[rightBorder]));
rightBorder --;
}
}
return maxArea;
}
}
标签:11,rightBorder,int,height,力扣,leftBorder,最多水,maxArea,指针 来源: https://www.cnblogs.com/scarecrow-wbl/p/15004795.html