leetcode每日一题 python解法 4月18日

难度:中等

题目内容:

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n 的值至少为 2。

image.png

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

题解:

emmm
左右两个指针分别在两端,然后每次判断左指针和右指针哪个指向的数大,大的不变,小的往中间走。因为如果你往边上走的话是不可能出现比现在还大的体积的情况的
依次遍历一遍,然后把所有的结果的最大值弄出来就可以了。

class Solution:
    def maxArea(self, height: List[int]) -> int:
        i = 0
        j = len(height) - 1
        r = 0
        while i < j :
            r = max(r,min(height[i],height[j]) * (j - i) ) 
            if height[i] > height[j]:
                j -= 1
            else:
                i += 1
        return r
image.png

不过内存占用有点过分

class Solution:
    def maxArea(self, height: List[int]) -> int:
        i = 0
        j = len(height) - 1
        r = 0
        while i < j :
            if height[i] > height[j]:
                if height[j]* (j - i) > r:
                    r = height[j]* (j - i)
                j -= 1
            else:
                if height[i]* (j - i) > r:
                    r = height[i]* (j - i)
                i += 1
        return r

稍微修改了一下


image.png

耗时少了不过内存还是占用好多。。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 难度:中等 题目内容: 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,...
    Never肥宅阅读 2,271评论 0 3
  • 如果说哭泣可以解决一切,这世界上将不会有坚强和勇敢等激励人心的词汇。 如果说我们遇到困难挫折,不去客服和面对,那我...
    曼丽心语阅读 583评论 0 1
  • 今儿年二十八啦,新年越来越近,八点多打开电视想休息一下,也不知道要看什么,最近喜欢上了看综艺频道,但也没有过多的关...
    陕县1433卫秋丽阅读 994评论 0 0
  • 你是一艘大船, 载着我驶向远方, 去追寻秘密, 探索神奇。 你是一座大山, 背着重担, 哺育我成长, 强壮我身心。...
    雨之日记阅读 1,293评论 0 1