算法:左右双指针。两端中的短边朝向另一端移动,直至双指针相遇。
时间复杂度:O(N)
我的C源码:
int maxArea(int* height, int heightSize){
int max = 0;
int left= 0;
int right = heightSize-1;
int a, b, area;
while(left < right)
{
a = height[left];
b = height[right];
if (a <= b)
{
area = a * (right - left++);
}
else
area = b * (right-- - left);
if(area > max) max = area;
}
// for(int i =0; i< heightSize-1; i++) //暴力解法会超时
// {
// for(int j= i+1; j< heightSize; j++)
// {
// h = height[i] <= height[j] ? height[i] : height[j];
// area = h * (j-i);
// if(area > max) max = area;
// }
// }
return max;
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!