- 算法
双指针、贪心 - 核心思想
这道题采用贪心的思想来做,贪心意为每一步都使当前利益最大化。最开始的想法是求出每一对之间的水量,然后从最大的水量的一组数中分别向左向右扩展,但是这个方法我没有通过数学证明出来。
最终采用了别人的方法,同样是贪心,两个指针分别从头从尾开始,每次移动的是当前较小的板子,因为如果移动较大的板子存在变小的可能。
这个代码也是写的精彩非常,给作者点赞 - 代码
class Solution {
public int maxArea(int[] height) {
int i = 0,j = height.length - 1,res = 0;
while(i < j){
res = height[i] > height[j]?
Math.max(res,(j - i)*height[j--]):Math.max(res,(j - i)*height[i++]);
}
return res;
}
}