LeetCode 11. Container With Most Water
题目
Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container and n is at least 2.
分析
时间很富裕的一道题,本来想先用暴力试试时间的,结果一下就过了……
稍微优化了一下(非最优解)。
代码实现
class Solution {
public:
int maxArea(vector<int>& height) {
int maxNum = 0;
int maxHeightLeft = 0;
for (int indexFirst = 0; indexFirst < height.size(); indexFirst++)
{
if (maxHeightLeft < height[indexFirst])maxHeightLeft = height[indexFirst];
else continue;
for (int indexSecond = height.size() - 1; indexSecond > indexFirst; indexSecond--)
{
if (height[indexFirst] <= height[indexSecond]) {
maxNum = max(maxNum, (indexSecond - indexFirst) * height[indexFirst]);
break;
}
maxNum = max(maxNum, (indexSecond - indexFirst) * min(height[indexFirst], height[indexSecond]));
}
}
return maxNum;
}
};
新学期打的第一道题,所以先用medium级试试手感。而且这学期要开始学专业课了,估计也没什么时间写题了……