双指针,分别指向两端,每次移动的是比较短的那段,关于这个的说法,leetcode有人做了证明,我这里把这种算法理解为贪心法。每次都是做的看似最大的选择,只是猜测。
int maxArea(vector<int>& height) {
int start(0), end(height.size()-1), max_a(0);
int area_tmp(0);
while(start < end){
area_tmp = min(height[start], height[end]) * (end - start);
max_a = max_a > area_tmp ? max_a:area_tmp;
if(height[start] > height[end]) end--;
else start++;
}
return max_a;
}