leetcode 盛最多水的容器

給定 n 個非負整數 a1,a2,...,an,每一個數表明座標中的一個點 (iai) 。畫 n 條垂直線,使得垂直線 i 的兩個端點分別爲 (iai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器能夠容納最多的水。python

注意:你不能傾斜容器,n 至少是2。code

解析一下:這道題返回的是最大面積io

解題思路: 給定的一個list ,面積的最大的是給定固定的寬度的話咱們取高度比較小的哪個,面積的公式是abc(a[i]-a[j])*abc(i-j) i,和j 對應的是list的下標,咱們給定i和j 一個從左往右一個從右往左當寬度一個高度誰最高的話就移動另一側的好比a[j]>a[i] 移動i=i+1,反之也如此class

class Solution(object):
    def maxArea(self, a):
        left = 0
        right =len(a)-1
        maxarea = 0

        while left < right:
            width = right -left
            height = min(a[left], a[right])
            if a[left] < a[right]:
                left=left+1
                if maxarea < height * width:
                    maxarea = height * width
            else:
                right=right-1
                if maxarea < height * width:
                    maxarea = height * width    
        return maxarea
相關文章
相關標籤/搜索