JS_LeetCode05:盛最多水的容器
5.盛最多水的容器
给定一个长度为
n
的整数数组height
。有n
条垂线,第i
条线的两个端点是(i, 0)
和(i, height[i])
。找出其中的两条线,使得它们与
x
轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
说明:你不能倾斜容器。
贪心算法
总是在当前条件下做出最优选择!
首先,要知道水的容量由长宽高决定,这里的宽固定了,因此取决于长(木板间的距离)和高(最短木板的高度)。我们从两端分别设置指针开始,此时的长是最长的!更新当前的水容量,尝试移动短木板所在指针,如此更新水容量,直到双指针相遇。
? 为什么是移动短木板的指针呢
水的容量由短木板决定,假设移动长木板的指针,可能下一次的木板更短或者更长,但两种情况导致的水容量只会更少。而移动短木板所在的指针,下一次的水容量会有增加的机会。
解答
1 |
|