Problem: 11. 盛最多水的容器
思路
你选用何种方法解题? 双指针
解题过程
这些方法具体怎么运用? 我们可以把这个问题看作是求面积最大的问题,两个边的坐标相减再乘以对应短的边 所以我们要面积最大,肯定是希望值小的那一边换掉 设left=0和right=len-1,数值小的向中间移动,一边计算面积,记录最大的面积
复杂度
- 时间复杂度: O(∗)O(*)O(∗)
- 空间复杂度: O(∗)O(*)O(∗)
Code
function maxArea(height: number[]): number {
// 面积最大,双指针
let left=0,right=height.length-1;
let mianji = 0;
let max = 0;
while(left<right){
let k = Math.min(height[right],height[left]);
mianji = (right-left)*k;
max = Math.max(mianji,max);
if(height[left]<height[right]){
left++;
}else{
right--;
}
}
return max;
};