一:题目
二:上码
// class Solution {
// public int maxArea(int[] height) {
// int len = height.length;
// int ans = 0;
// for (int i = 0; i < len; i++) {
// for (int j = len - 1; j >= i; j--) {
// int x = j - i;
// int y = Math.min(height[i],height[j]);
// ans = Math.max(ans,x*y);
// }
// }
// return ans;
// }
// }
/**
思路:
1. S(面积) = min(h[i],h[j]) * (j-i) (每次都是短板*(j-i))
2.双指针那么我们如何移动指针呢
1>:如果移动短板 那么 我们的面积可能增大 因为可能会遇见更长的班
2>:如果移动长板 那么 我们的面积不变或者变小 因为可能遇见长板 但最短的板不变 面积不变
可能遇见短板 那么面积更小
3>:所以的话 我们每次移动短板
*/
class Solution {
public int maxArea(int[] height) {
int len = height.length;
int ans = 0;
int i = 0;
int j = len - 1;
while (i < j) {
ans = Math.max(ans,Math.min(height[i],height[j])*(j-i));
if (height[i] > height[j]) j--;
else i++;
}
return ans;
}
}