算法题解:盛最多水的容器
题目
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少为 2。
示例:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/container-with-most-water
方法一:暴力解法
首先最简单的方法就是找出所有可能的容器组合,用参数max来保存容器的最大面积。实现如下:
def maxArea(height):
max = 0
for i in range(len(height)):
for j in range(i+1,len(height)):
area = (j-i)*min(height[i],height[j])
if area > max :
max = area
return max
在jupyter notebook上测试后无误,但是在力扣上提交时显示超过时间限制,所以可以采用更简单的方法。