LeetCode热题100--盛水最多的容器
·
题目:


解析:
使用双指针的思想分别从左右两端(left=0,right=height.length-1)向内遍历数组,容积的大小很容易能得出为Math.max(height[left],height[right]) *(right-left),紧接着判断left和right下标对应数组值的大小决定指针移动方向(由于指针向内移动,因此在高不变的情况下,体积在移动过程中只会越来越小,因此要让高小的一侧移动:即判断出小的一侧后不需要再计算以这一侧为高的所有体积),将所有的体积全部求出后找到最大值即可。
代码:
class Solution {
public int maxArea(int[] height) {
int left = 0, right = height.length - 1;
int ret = 0;
while (left < right) {
int v = Math.min(height[left], height[right]) * (right - left);
ret = Math.max(ret, v);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return ret;
}
}
更多推荐
所有评论(0)