题目:
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:
你不能倾斜容器,且 n 的值至少为 2。
输入数据:
[1,8,6,2,5,4,8,3,7]
[1,1,2,1,5,6,3,5,10,6,9]
[1,1,1,1,1,1,1]
输出数据:
49
30
6
算法实现:
int maxArea(vector& height) { // 输入一个数组
int maxArea = 0;//定义变量存储最大面积
int temp = 0;//定义变量临时存储计算所得面积
int r = 0,l = height.size()-1;//定义变量分别指向数组的首元素和尾元素
while(r < l){//当尾元素下标小于等于首元素下标时,说明遍历求解了所有可能的取值,跳出循环
if(height[r]
temp = height[r]*(l-r);
r++;//首元素小的,下标加1
}else{
temp = height[l]*(l-r);
l--;//尾元素小的,下标减1
}
if( maxArea
maxArea = temp;
}
}
return maxArea;//返回双指针法遍历数组计算出来最大面积,问题解决
}
原文链接:https://blog.csdn.net/qq_24732415/article/details/106724219
站长简介:前每日优鲜python全栈开发工程师,自媒体达人,逗比程序猿,钱少话少特宅,关注我,做朋友, 我们一起谈人生和理想吧!我的公众号:想吃麻辣香锅
关注公众号回复充值+你的账号,免费为您充值1000积分