ID:11.盛最多水的容器

38 阅读1分钟

考点:双指针

题目链接

思路

明确考点是双指针后就比较简单了,代码自己写的。注意能使用双指针的原因:当指针在数组两端时,容器的长度肯定是最大的,因此指针向中间收缩就会导致长度缩小,那么就期望高度能够增加,而高度想要增加,就要让指针指向位置中高度较小的那一个指针尝试向里去寻找更高的高度,可以理解为“弥补短板”。

var maxArea = function(height) {
    let i = 0, j = height.length - 1;
    let max = j * Math.min(height[i], height[j]);
    while(i < j) {
        if(height[i] < height[j]) i++;
        else j--;
        const area = Math.min(height[i], height[j]) * (j - i);
        if(area > max) max = area;
    }
    return max;
};