您的位置:首页 > 编程语言 > C语言/C++

C++之数字容器装水问题(10)---《那些奇怪的算法》

2017-10-14 22:20 351 查看
参考:《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;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐