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.

面积的定义是(j-i)×min(边)
这个题主要在于复杂度的问题,开始使用两个for循环时间复杂度是O(n(n-1)/2),加了些条件判断也还是超时,要达到O(n)的复杂度,就只能用while进行两个边的比较。
def maxArea(self, height: List[int]) -> int:
lenth=len(height)
max_are=0
i=0
j=lenth-1
while i<j:
max_are=max(max_are,(j-i)*min(height[i],height[j]))
if height[i]<height[j]: i+=1
else:j-=1
return max_are
本文探讨了如何在给定的非负整数数组中找到能够形成最大盛水量的两个垂直线。通过分析,提出了一个O(n)的时间复杂度解决方案,避免了传统的O(n^2)方法。该算法使用双指针技术,从两端向中间逼近,通过比较高度来决定移动哪个指针。
317

被折叠的 条评论
为什么被折叠?



