题目链接:
题目描述:
思路:
面积主要看短线和两线之间的距离
假设两个指针分别指向一个长线和一个短线,向内移动其中任何一个,他们的距离会变小
- 向内移动长线:下一个可能比短线更长或更短,总面积不会增大,要么不变,要么减小
- 向内移动短线:下一个可能比长线更长或更短,总面积可能增大
利用双指针,分别指向开头和末尾,然后向内移动,
要找到最大的面积,每次只移动短线,
实现代码:
class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1;
int ans = 0;
while(l < r){
//先*再++
ans = height[l] < height[r] ? Math.max((r-l)*height[l++],ans) : Math.max((r-l)*height[r--],ans);
}
return ans;
}
}