最多水容量(双指针)
思路:开始想的是找一个左边的板然后枚举右边的板取最大值,然后wa了,中间虽然有想到双指针,但是稍微存在一些问题,每次调整比较的下一步的大小,贪心取大的,然后又错了,最后每次移动较短的边,然后遍历完,取最大值输出救过了。
代码如下;
#include<bits/stdc++.h>
using namespace std;
int m[20005];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d",&m[i]);
}
int l=0,r=n-1,mn=min(m[l],m[r])*(n-1);
while(l<r){
int now;
if(m[l]<=m[r]){
l++;
}else{
r--;
}
now=min(m[l],m[r])*(r-l);
mn=max(mn,now);
}
printf("%d\n",mn);
}
return 0;
}