力扣刷题11. 盛最多水的容器
11. 盛最多水的容器 - 力扣(LeetCode)
暴力解法就是 双层循环,遍历寻找最大的值,但是会超时
这一道题可以用双指针的解法,左指针在最左边,有指针指向最右边,每次判断左右指针的值大小,如果是左指针小于有指针,就让左指针加一,如果是右指针小于左指针,让右指针减一,可以确保寻找到最大的值,有贪心的感觉
class Solution {
public int maxArea(int[] height) {
int l = 0;
int r = height.length - 1;
int result = 0;
while (l < r) {
int min = Math.min(height[l], height[r]);
result = Math.max(result, (r - l) * min);
if(height[l]<=height[r]){
l++;
}else if(height[r]<height[l]){
r--;
}
}
return result;
}
}