第一种解法(我最喜欢的一种)
class Solution {
public int maxArea(int[] height) {
int len = height.length;
if (len < 2) return 0;
int max = 0;
int minNum = 0;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (height[i] >= height[j]) {
minNum = height[j];
} else {
minNum = height[i];
}
max = Math.max(max, (j - i) * minNum);
}
}
return max;
}
}
第二种解法–双指针
public static int maxArea2(int[] height) {
int max = 0;
int len = height.length;
if (len < 2) return 0;
int minNum = 0;
int left = 0;
int right = len - 1;
int s = 0;
while (left < right) {
if (height[left] > height[right]) {
minNum = height[right];
s = (right - left) * minNum;
right--;
} else {
minNum = height[left];
s = (right - left) * minNum;
left++;
}
max = Math.max(max, s);
}
return max;
}