
LeetCode实战11. 盛最多水的容器题目给定 n 个非负整数 a1a2…an每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。说明你不能倾斜容器且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。示例输入: [1,8,6,2,5,4,8,3,7] 输出: 49来源力扣LeetCode链接https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。算法实现public class Solution { public int MaxArea(int[] height) { int n height.Length; int res 0; int left 0; int right n-1; while(left ! right) { n--; if(n*Math.Min(height[left], height[right]) res) res n*Math.Min(height[left], height[right]); if(height[left]height[right]) left 1; else right - 1; } return res; } }思路利用左右两端两个指针计算左边和右边围起来的面积如果大于结果则记录。每次两指针较短的一边相中间移动一位直至相遇。结果