其他分享
首页 > 其他分享> > Leetcode11.盛水最多的容器

Leetcode11.盛水最多的容器

作者:互联网

问题描述:

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

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

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

说明:你不能倾斜容器。


 

题解思路:

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

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

 

 

 

 

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

 

标签:容器,right,指向,盛水,height,Leetcode11,左右两个,指针
来源: https://www.cnblogs.com/USTCFreeman/p/15966080.html