2022-4-25 LeetCode热题100(hot100) 每日题目第二周 周一
题目名:盛水最多的容器
方法:双指针或暴力解法(超时)
整体思路
- 第一种思路:首先最容易想到的就是暴力解法,即枚举所有可能的情况,但是没有卵用,后面的测试样例根本过不了!
- 第二种思路:双指针
- 我们可以看到制约盛水面积的主要因素是受限于最短的边,类似于木桶效应
- 所以定义左指针left,以及右指针right,分别向中间移动,当left指针对应的线的高度比right指针所对应的线的高度小的时候,说明盛水面积受限于左边高度left,那么就改变left指针的值。left++向右边移动,反之的话right- -向左边移动。
- 具体实现见代码
代码实现
// 解法1:暴力
const maxArea= (height) => {
// 数组长度为2就直接返回
if(height.length===2) return Math.min(height[0],height[1])
//用于存放最大的面积
let max = 0
for(let i =0;i < height.length-1;i++) {
for (let j = i+1;j<height.length;j++) {
let temp = (j-i)*Math.min(height[i],height[j])
max = Math.max(max,temp)
}
}
return max
}
// 解法2:双指针
if(height.length===2) return Math.min(height[0],height