leetcode hot 100 ACM模式——11.盛水最多的容器
采用双指针,一个放左边一个放右边,取两者之间比较矮小的墙壁(较小的数)向中间移动,直到两个指针靠拢为止。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。
·
题干:
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
解题思路:
采用双指针,一个放左边一个放右边,取两者之间比较矮小的墙壁(较小的数)向中间移动,直到两个指针靠拢为止。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int temp;
vector<int> a(n);
for(int i=0;i<n;i++){
cin>>temp;
a[i] = temp;
}
int i = 0;
int j = n - 1;
int result = (j - i) * min(a[i], a[j]);
while(i<j){
if(a[i]<=a[j]){
i++;
int s = (j - i) * min(a[i], a[j]);
result = max(s,result);
}
else{
j--;
int s = (j - i) * min(a[i], a[j]);
result = max(s,result);
}
}
cout << result;
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)