算法 【双指针】盛水最多的容器 求解代码 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; // 返回最大面积 }