LeetCode 11 - 盛最多水的容器
LeetCode 11 是一道经典的双指针问题,考察程序设计中的优化方法以及逻辑推导能力。题目核心是找到由两条柱子围成的、最多水的容器。以下是详细解法、变体和快速 AC 总结。
题目描述
给定一个长度为 n
的数组 height
,数组中每个元素表示一个高度。每对 (i, j)
组合能形成一个容器,其容积由两条柱子之间的 最小高度 和 宽度 决定:
- 容积公式:
area = min(height[i], height[j]) * (j - i)
。
要求返回能够容纳最多水的容器的 最大面积。
示例
输入: height = [1,8,6,2,5,4,8,3,7]
输出: 49
解释: 在第 1 根柱子 (高度 8) 和第 8 根柱子 (高度 7) 之间可以容纳最多水,面积为 49。
解题思路
由于宽度 (j - i)
随着两根柱子间距离的变化会变小或变大,因