Loading...

【双指针】盛水最多的容器

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public int maxArea(int[] height) {
        int left = 0; // 左指针
        int right = height.length - 1; // 右指针
        int ans = 0; // 记录最大面积,初始为0(面积非负)

        // 双指针相向遍历,直到指针相遇
        while (left < right) {
            // 计算当前容器面积并更新最大值:宽度(左右指针间距) × 有效高度(矮柱子决定,取最小值)
            ans = Math.max(ans, (right - left) * Math.min(height[right], height[left]));
            // 移动更矮的柱子指针(只有这样才有可能增大有效高度,获得更大面积)
            if (height[right] < height[left]) {
                right--; 
            } else {
                left++; 
            }
        }
        return ans; // 返回最大面积
    }
最后更新于 2026-04-05 17:35:33
Code Road Record