11 Container with Most Water

11 Container with Most Water(容器最大装水容量)

题目内容

这个题目挺好玩的。
11 Container with Most Water

题目解析:题目的大意是这样的。给你n个非负数,每一个(i,a_i)表示一个坐标点,过任意坐标点作x轴的垂线。找到两根垂线与x轴构成的容易有着最大面积。
11 Container with Most Water
比如图上的任意两条垂线之间与x轴构成一个容器,而容器的容量是由短的那根垂线决定的。这是哲学里面的深刻原理啊!

解题思路

首先,明确题目要解决的是求最大面积的问题。那么我们只要遍历图上所有的容器,求得最大面积即可。
1)设置两个指针,左指针left和右指针right。分别从数组a_1,a_2,a_3,…a_n的头部和尾部开始遍历。
2)计算在当前两垂线height[left]和height[right]下,得到的面积height[left],height[right])*(right-left)。
3)比较是否更新最大面积maxArea的值,如果大于原有的maxArea则更新。
4)判断哪个指针进行移动。如果左边的值小于右边的值,则移动左指针,否则移动右指针。

代码

11 Container with Most Water