LeetCode热题Hot100 - 盛水最多的容器

一刷~

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

 自己的思路:

用一个字典保存height中每个元素的下标,然后对height从小到大排序,遍历height数组,对每个height[i],得到原下标pos,计算pos与最左(height[0])、最右(height[-1])之间的面积,取最大值。然后超时了。。

class Solution:
    def maxArea(self, height) -> int:
        res = 0
        #使用字典保存每个数字的下标位置
        dic = {}
        for i in range(len(height)):
            if height[i] not in dic:
                dic[height[i]] = [i]
            else:
                dic[height[i]].append(i)
                
        idx = [i for i in range(len(height))]
        height.sort()
        
        #从小到大遍历
        for h in height:
            pos = dic[h].pop()
            res = max(res, (pos-idx[0])*h, (idx[-1]-pos)*h)
            idx.remove(pos)
        
        return res

然后去看了题解,秒啊~

用两个指针,从左右两侧向中间遍历数组,每次向内移动height较小的那个指针(移动较小的指针,则面积可能变大,但移动较大的指针,面积必然变小)。

class Solution:
    def maxArea(self, height) -> int:
        res = 0
        
        left, right = 0, len(height)-1
        while left < right:
            res = max(res, min(height[left], height[right])*(right-left))
            if height[left]<height[right]:
                left+=1
            else:
                right-=1
        return res

相关推荐

  1. LeetCodeHot100 - 容器

    2024-04-06 05:48:05       43 阅读
  2. 面试经典150——容器

    2024-04-06 05:48:05       26 阅读
  3. 【力扣100】5.容器

    2024-04-06 05:48:05       67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 05:48:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 05:48:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 05:48:05       87 阅读
  4. Python语言-面向对象

    2024-04-06 05:48:05       96 阅读

热门阅读

  1. WebKit结构简介

    2024-04-06 05:48:05       42 阅读
  2. sqlmap基础知识(三)

    2024-04-06 05:48:05       41 阅读
  3. 信创咨询岗位需求分析

    2024-04-06 05:48:05       36 阅读
  4. Hibernate中的ORM(对象关系映射)是如何工作的?

    2024-04-06 05:48:05       35 阅读
  5. 苹果公司为什么要设计元类

    2024-04-06 05:48:05       38 阅读
  6. 类和对象(二)

    2024-04-06 05:48:05       36 阅读