欢迎光临散文网 会员登陆 & 注册

leetcode11-盛最多水的容器

2023-06-01 19:27 作者:超级小猫迭代  | 我要投稿

题目描述

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

原题的图片
题目

题目解答

这道题使用的是贪心算法,使用了双指针

思路比较难想,代码很简单

首先,我们让距离最远的两条线成为容器壁

随后,找到高度较小的线,向内找到相邻的下一条线

记录最大值,直到两条线重合

十分的简单o((>ω< ))o

细节

为什么可以采用双指针呢(⊙_⊙)?

假定左指针不移动,只向左移动右指针

这样是不是容器的容量只会变小不会变大啊!

好吧......

假如右指针变大了,但是左指针没有变

而二者的距离变小了

所以容量变小了

假如右指针变小了,距离也变小了

容量当然变小了

现在让两个指针都动起来

如果挪动大的,那么只能变小

但是如果挪动小的,有可能变大

代码

复杂度分析

时间复杂度:O(n)

空间复杂度:O(1)

leetcode11-盛最多水的容器的评论 (共 条)

分享到微博请遵守国家法律