题目:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。 题目链接
我的JavaScript解法
var maxArea = function(height) {
let left=0, right = height.length -1;
let max = 0
while(left < right) {
let currArea = Math.min(height[left], height[right]) * (right - left)
max = Math.max(max, currArea)
if (height[left] < height[right]) {
left++
} else {
right--
}
}
return max
}
解析: 双指针解法,参考 的讲解,知道为什么每次循环都排除了一行或者一列
- 时间复杂度:
- 空间复杂度:
我的第一版是暴力破解:
var maxArea = function(height) {
const n = height.length
let max = 0
for (let i = 0; i < n; i++) {
for (let j = i+1; j < n; j++) {
let currArea = Math.min(height[i], height[j]) * (j-i)
max = Math.max(max, currArea)
}
}
return max
};
结果正确,提交之后超时。。。。。