盛最多水的容器——双指针

本文通过实例解析力扣LeetCode中的双指针技巧,强调从整体和局部角度思考,当左指针比右指针小时,确定其最大值。算法核心是不断移动较矮的指针并更新最大值,确保不会遗漏更高值的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

. - 力扣(LeetCode)

双指针理解:

以整体和局部的角度考虑:

如果Left比Right矮,那么Left所有可能能组成的最大值此时就已经确定了,无论中间是否有比Right还要高的数;先记为Lmax

那么最终答案即为max(Lmax, Right与剩余的数的最优解)

继续分析如下图:

再去新的Left,与上一步的Right,以此类推..

即可获取最终答案

为什么没有遗漏?

因为每次移动矮的那个前,矮的那个最大值已经确定,未确定的是高的那个与剩余匹配的最大值。