每日一题20201116(11. 盛最多水的容器)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 盛最多水的容器

11. 盛最多水的容器


17.jpg

image.png

思路


这题有点像接雨水,但是比接雨水简单的是,这个中间是没有木棍的,所以很容易计算出2根棍子能装多少水。
根据木桶效应,容器装水多少是根据最短那块来决定的。
本题用双指针的方式,首先比较两侧木板较短的那块板子,记录下值,如果右侧小则右侧的指针移动,为啥呢,因为右侧可能会有更高的板子出现。如果这时候右侧的更低了呢?没关系,我们记录了每一次的最大值。
class Solution:
    def maxArea(self, height: List[int]) -> int:
        i, j = 0, len(height)-1
        max_value = 0
        while i < j:
            # 最大值等于 (j-i) * 短板的高度 与 目前的最大值的比较
            max_value = max(max_value, min(height[i], height[j]) * (j-i))
            if height[i] < height[j]:
                i += 1
            else:
                j -= 1
        return max_value

感觉max和min耗时很久,改造了一下:


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

18.jpg

image.png

相关文章
|
1月前
|
存储 容器
LeetCode刷题---11. 盛最多水的容器(双指针-对撞指针)
LeetCode刷题---11. 盛最多水的容器(双指针-对撞指针)
|
6月前
|
算法 容器
【算法专题突破】双指针 - 盛最多水的容器(4)
【算法专题突破】双指针 - 盛最多水的容器(4)
19 0
|
6月前
|
算法 测试技术 容器
【算法挨揍日记】day02——双指针算法_快乐数、盛最多水的容器
题目: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为:
36 0
|
2月前
|
容器
LeetCode题:11. 盛最多水的容器
LeetCode题:11. 盛最多水的容器
16 0
|
3月前
|
Python 容器 人工智能
Python每日一练(20230402) 对称二叉树、全排列、盛最多水的容器
Python每日一练(20230402) 对称二叉树、全排列、盛最多水的容器
28 0
Python每日一练(20230402) 对称二叉树、全排列、盛最多水的容器
|
3月前
|
人工智能 容器
leetcode-11:盛最多水的容器
leetcode-11:盛最多水的容器
26 0
|
3月前
|
存储 算法 Java
Leetcode算法系列| 11. 盛最多水的容器
Leetcode算法系列| 11. 盛最多水的容器
|
3月前
|
算法 Java C++
【数据结构和算法】盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。
53 2
【数据结构和算法】盛最多水的容器
|
4月前
|
人工智能 容器
【 腾讯精选练习 50 题】15—盛最多水的容器【中等】
【 腾讯精选练习 50 题】15—盛最多水的容器【中等】
|
4月前
|
容器
力扣11、 盛最多水的容器
力扣11、 盛最多水的容器