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