雙指針,分別指向兩端,每次移動的是比較短的那段,關於這個的說法,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;
}