这个题目思路
首先一个在最前面,一个在最后面。比较哪一个比较矮,然后往中间挪一步。最大值就在其中。
class Solution {
public int maxArea(int[] height) {
int length = height.length;
int first = 0,last = height.length-1;
int ans = 0;
while(first < last){
ans =Math.max(ans,Math.min(height[last],height[first])*(last-first));
if(height[last] > height[first]) first++;
else last--;
}
return ans;
}
}
学习点装逼写法
public int maxArea(int []a){
int max = 0;
for(int i = 0, j = a.length-1; i < j;){
int minHeight = a[i]<a[j]?a[i++]:a[j--];
max = Math.max(max,(j-i+1)*minHeight);
}
return max;
}