class Solution {
public:
int maxArea(vector<int>& height) {
int i = 0;
int j = height.size() - 1;
int max_v = 0;
int tmp_v = 0;
while (i < j) {
tmp_v = min(height[i], height[j]) * (j - i);
if (max_v < tmp_v) {
max_v = tmp_v;
}
if (height[i] < height[j]) {
i++;
} else {
j--;
}
}
return max_v;
}
};
思路
1 根据题目意思,建立一个元素装最大容量值,利用两次循环,将每次计算的容量值与最大值比较,即可得到结果,但是显示时间超过;
2 两重循环减少为一重循环,思路是从两边减少;根据题目意思,底边一定在减小,若要容量最大,则高一定要变高,所以比较高,在高较低的那一边进行变化;
要点
下标较小处步长增加,下表较大处步长减小;