11. 盛最多水的容器
max = (end - start) * getMin(height[end], height[start])
- 暴力解法 就遍历两轮计算所有两个坐标值之间的情况,会超时
- 双指针法,从首尾两点开始计算,两点距离不变,max值取决于value小的数据,哪端小哪端往中间靠,到首尾坐标相等时候结束遍历,计算出所有可能存在的最大值中取最大值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| /**
* @param {number[]} height
* @return {number}
*/
var maxArea = function(height) {
let start = 0;
let end = height.length - 1;
let max = 0;
while(end - start >= 1) {
let endValue = height[end];
let startValue = height[start]
const tmp = (end - start) * (endValue > startValue ? startValue : endValue);
max = tmp > max ? tmp : max;
if(endValue > startValue) {
start += 1;
}else {
end -= 1;
}
}
return max;
};
|