参考:《one-day-one-leetcode》
问题描述:
注意理解程序中容器装水取决于容器的小的那边,并不是容器的大的那边。
优化实现代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int maxArea(vector<int> height){
int i = 0;
int j = height.size() - 1;
int max = 0;
while (j > i){
int con = 0;
int min = height[i] > height[j] ? height[j] : height[i];
if (j == i + 1) con = min;
else con = min*(j - i);
if (con > max){
max = con;
}
//移动左右指针,注意最小的我们已经计算过了
if (height[i] > height[j]){
j--;
}
else{
i++;
}
}
return max;
}
int main(){
vector<int> v;
int arr[] = { 3, 4, 5, 6, 9, 10 };
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){
v.push_back(arr[i]);
}
int ma = maxArea(v);
cout << ma << endl;
return 0;
}
运行结果: