TheContainerWithMostWater题目来源:https://leetcode-cn.com/problems/container-with-most-water/题目给定n个非负整数a1,a2,...,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问题解决思路采用双指针的方法;定义最大值max_area来比较确定最终的最大值。定义双指针,一个指向开头,一个指向结尾;双指针向两边靠拢,靠拢的标准:指针所指的线段较短的部分向较长的线段移动。具体原因是:距离决定了,最终容量由较短的线路决定。如果移动到更长的线,如果指针指向的线移动后变长了,虽然距离变短了,但还是有可能与距离的乘积进行比较。前面定义的max_area的值很大(也就是容纳的容量变大);两个指针重合退出循环,返回最终最大值max_area。下图是指针逼近和容器容量变化的示意图(第一次,有点粗糙Orz)代码实现类解决方案:defmaxArea(self,height:List[int])->int:#定义Subsequent的最大值comparison#定义双指针,一个指向起点,一个指向终点max_area,l,r=0,0,len(height)-1#双指针向中间靠拢whilel
