Leetcode11.盛水最多的容器

问题描述:

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

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

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

说明:你不能倾斜容器。


 

题解思路:

容器的面积公式:S=min(height[left],height[right])*(right-left)

很容易想到的就是暴力求解的办法,首先对数组进行两次遍历计算得到最大值并返回。

 

 

 

 

另一种思路就是双指针思想,首先设立左右两个指针,一个指针指向开头,一个指向结尾。此时的容器底最大,接下来要做相应的调整,调整的方向就是左右两个指针所指向的元素,哪个元素的值最小,则该指针向内侧移动一个单位。这样能保证在容器底部减小的时候,为了使得容器所盛面积最大,放弃原容器中较小的一条边,保留较长的一条边,以此获取更高边的机会。

 

posted @ 2022-03-04 20:51  USTC_Freeman  阅读(43)  评论(0)    收藏  举报