思路:
双指针,两边谁的高度较低,就往里移动一格,这样可能会使面积比移动之前大
如果移动的是较高的板子,遇到更高的板子的概率会低一点
代码:
class Solution {
public int maxArea(int[] height) {
int i=0,j=height.length-1,res=0;
while(i<j){
if(height[i]<height[j]){
res=Math.max(res,(j-i)*height[i++]);
}
else{
res=Math.max(res,(j-i)*height[j--]);
}
}
return res;
}
}
分解:
1)过程:
以上可以看出,右边板子比左边的低,所以它往内了一格 j--
复杂度分析:
时间复杂度:O(N) 指针要遍历所有的下标
空间复杂度:O(1) 指针只占用常数级空间