leetcode 11. 盛最多水的容器

题目描述

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
说明:你不能倾斜容器。

链接:https://leetcode.cn/problems/container-with-most-water

示例

image

双指针解法

为什么会用到双指针?
image

在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度变短:

  • 若向内移动短板,水槽的短板可能变大,因此下个水槽的面积可能增大 。
  • 若向内移动长板,水槽的短板不变或变小,因此下个水槽的面积一定变小。

因此,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;即可获得最大面积。

posted @ 2022-07-06 18:00  SmartLiu  阅读(16)  评论(0编辑  收藏  举报