Leetcode11-盛最多水的容器

Leetcode11-盛最多水的容器

题目:

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

**说明:**你不能倾斜容器,且 n 的值至少为 2。

在这里插入图片描述

示例:

输入:[1,8,6,2,5,4,8,3,7]
输出:49

思想:

要得到面积最大的矩形,我做的方法是每乘一次都要判断是否是最大,一直到指向头部的指针(i)大于等于尾部的指针(j)的时候,说明已经结束了,否则就过头了.

当height[i] > height[j]就将短的下标往前移,这样就确保高度更高,不会让水漫出来.

具体代码:

int maxArea(int* height, int heightSize){int i = 0, j = heightSize-1;int max = 0;while(i < j){int temp;if(height[i] > height[j]){temp = height[j];if(max < temp*(j-i)){max = temp*(j-i);}j--;}else{temp = height[i];if(max < temp*(j-i)){max = temp*(j-i);}i++;}}return max;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部