本文主要是介绍5、双指针-盛最多水的容器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解析:
- 一个指针在数组的开始(我们称之为
L
),另一个在数组的末尾(称之为R
)。 - 然后,我们计算当前
L
和R
之间的容器可以容纳的水的量,这个量由两个指针之间的距离(R - L
)和两个指针指向的高度中较小的那个决定(因为水的高度不能超过两边中较低的那个)。 - 每次迭代后,我们将较矮的那个指针向另一个指针的方向移动一步(因为如果移动较高的那个指针,容器的高度不会增加,而宽度会减少,所以容积只可能变小)。
代码如下:
class Solution {public int maxArea(int[] height) {if (height==null||height.length==0){return 0;}int L=0;int R=height.length-1;int max=0;while (L<R){int w=R-L;int h=Math.min(height[L],height[R]);max=Math.max(max,w*h);if (height[L]>height[R]){R--;}else {L++;}}return max;}
}
这篇关于5、双指针-盛最多水的容器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!