11. 盛最多水的容器
2020-11-24 01:08 woshihuangrulin 阅读(82) 评论(0) 收藏 举报
这个题目需要清楚一个规律,我们从最左边和最右边两个值开始,当左边的值比较小时,只有往右移动左边的线才可能得到更大的的值,具体代码如下所示:
class Solution {
public:
int maxArea(vector<int>& height) {
int n = height.size();
if (n < 2) {
return 0;
}
int left = 0;
int right = n - 1;
int max_area = 0;
while (left < right) {
max_area = max(max_area, (right - left) * min(height[left], height[right]));
if (height[left] < height[right]) {
left++;
}
else {
right--;
}
}
return max_area;
}
};
浙公网安备 33010602011771号