两次循环
第一次循环,对于数组中每一个数 n u m s [ i ] nums[i] nums[i] 进行遍历
第二次循环,从当前数的下一个数 n u m s [ j ] nums[j] nums[j] ,其中 j > i j>i j>i 继续遍历,计算 t m p = m i n ( h e i g h t [ i ] , h e i g h t [ j ] ) ∗ ( j − i ) tmp=min(height[i],height[j])*(j-i) tmp=min(height[i],height[j])∗(j−i),表示两个高度的较小值乘两个高度的索引差(宽).保留最大的面积.
时间复杂度过高,超出时间限制.
class Solution:
def maxArea(self, height: List[int]) -> int:
n=len(height)
max_area=0
for i in range(n):
for j in range(i+1,n):
tmp=min(height[i],height[j])*(j-i)
max_area=max(tmp,max_area)
return res
分别设置 i , j i,j i,j为数组的两端,将 h e i g h t [ i ] , h e i g h t [ j ] height[i],height[j] height[i],height[j]中的较小索引朝向较大索引移动。在这个过程中,设置最大面积变量 m a x _ a r e a max\_area max_area保存最大面积。
class Solution:
def maxArea(self, height: List[int]) -> int:
max_area=0
i=0
j=len(height)-1
while(i<j):
tmp=min(height[i],height[j])*(j-i)
max_area=max(tmp,max_area)
if(height[i]>=height[j]):
j-=1
else:
i+=1
return max_area