暴力法 C:
int maxArea(int* height, int heightSize) {
int i, j;
int max_s = -99999, s;
for(i=0; i<heightSize-1; i++)
{
for(j=i+1; j<=heightSize-1; j++)
{
if(height[i]<=height[j])
s = (j-i) * height[i];
else
s = (j-i) * height[j];
if(s>max_s)
max_s = s;
}
}
return max_s;
}
暴力法 python:
超时
算法解决:
设置两个指针i,j,分别指向头和尾, 计算他们之间的面积,然后让高度短的一端指针向高度长的一端移动
C 代码:
int maxArea(int* height, int heightSize) {
int i, j;
int max_s = -99999, s;
i = 0, j = heightSize - 1;
while(i!=j)
{
if(height[i] <= height[j])
{
s = height[i] * (j - i);
i++;
}
else
{
s = height[j] * (j - i);
j--;
}
if(max_s < s)
max_s = s;
}
return max_s;
}
python代码:
class Solution:
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
max_s = -9999;
i = 0
j = len(height) - 1
while(i<j):
if height[i] <= height[j]:
s = height[i] * (j - i)
i += 1
else:
s = height[j] * (j - i)
j -= 1
if max_s < s:
max_s = s
return max_s