刷力扣热题–第一天–第十一题
菜鸟第一天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
本题求最大值,第一想法就是遍历,选择数组中的两个数字x和y,计算max(min(x,y)*(|x.index-y.index|)),先试试,看下。时间复杂度(O(n^2)),空间复杂度(1)
遍历超时间了,那就试下从两边依次向中心靠拢的方法实现:
OK,过了,时间复杂度O(n),空间复杂度O(1).
3.心得体会
这题目看着简单,但做起来还是得稍微想点的,能想起来快排的聚拢方法,但走了不少弯路,python实现也比较简单,慢慢积累吧。
代码在这:
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
max_area = 0
x = 0
y = len(height) - 1
while (x < y):
# print(x,y)
area = min(height[x], height[y]) * abs(x - y)
# print(height[x],height[y])
if height[x] < height[y]:
x += 1
else:
y = y - 1
if area > max_area:
max_area = area
else:
continue
return max_area
就这样,明天继续~
4.写作时长
2024-7-2-19:50 == 2024-7-2-21:22