11.Container With Most Water
思路:
- 首先假设选择两侧,如果想让体积变大,应该让小的一侧移动,因为想要使小的一侧遇到比原来大的高度。每次都移动小的,直到左右两侧相遇,记录移动过程中产生的最大值。复杂度为\(O(n)\)
class Solution {
public:
int maxArea(vector<int>& height) {
int maxRes = 0;
int len = height.size();
maxRes = min(height[0],height[len-1])*(len-1);
int i = 0, j = len-1;
int tmp = 0;
while(i < j){
tmp = min(height[i],height[j])*(j-i);
if(tmp > maxRes) maxRes = tmp;
if(height[i] > height[j])
j--;
else i++;
}
return maxRes;
}
};