Leecode盛水最多的容器 超详细解析

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

问题描述:


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

image.png



问题分析: 初次看到这题 第一个想法就是用贪心:使得容器两侧尽可能高 中间尽可能长 却不知如何是好 后来才发现是审题错了 题目就是要求求最大面积,而不是容器内各个数值的相加  (我把柱子理解成水了......)!!审题真的很重要


根据容器的最大面积(体积)由短板决定,假设起始点x坐标为i,终点为j,板长分别是h[i],[j]

因此可得 S=min(h[i],[j])×(j-i)

不妨考虑向内移动板子(长板或短板)(对撞指针)


image.png

image.png


综上 我们希望容器尽可能大 只需要考虑短板内移的情形 求出最大面积即可


下面呈现代码:


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

核心就在于探索使得S变大的情况?

image.png



我是小郑 期待和你一起进步😄


目录
相关文章
|
Kubernetes Ubuntu Cloud Native
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
159 0
|
6月前
|
算法 容器
LeetCode第11题盛最多水的容器
该文章介绍了 LeetCode 第 11 题盛最多水的容器的解法,通过分析得出只能移动短板才可能使面积变大的规律,使用双指针法解决该问题,避免了穷举法的高时间复杂度,并总结了算法题需要多实践、思考和积累技巧来提升解题能力。
LeetCode第11题盛最多水的容器
|
6月前
|
消息中间件 Kubernetes 容器
在K8S中,同⼀个Pod的不同容器互相可以访问是怎么做到的?
在K8S中,同⼀个Pod的不同容器互相可以访问是怎么做到的?
|
9月前
|
容器
leetcode代码记录(盛最多水的容器
leetcode代码记录(盛最多水的容器
40 1
|
9月前
|
调度 C++ 容器
【C++】手搓 list 容器
本文我们实现了STL库中重要的list 的模拟实现,其中最重要莫过于迭代器的封装类的书写,这是前所未有的操作(对于我来说,我是第一次使用这种结构)。通过list 的模拟实现也帮我们巩固了类与对象的知识,也强化了指针操作的思路。欢迎大家讨论分析。
67 1
|
9月前
|
算法 容器
每日一题:LeetCode-11.盛水最多的容器
每日一题:LeetCode-11.盛水最多的容器
|
9月前
|
容器
容器的通俗讲解
容器的通俗讲解
88 0
|
9月前
|
算法 C++ 容器
(C++)盛水最多的容器--双指针法
(C++)盛水最多的容器--双指针法
71 0
Leecode11 盛水最多的容器 双指针法
双指针两边逼近,能容纳水的量取决于最短的那一条边,如果 i 指向该条边,运算结束后 i++,反之 j-- 。
|
人工智能 容器
Leecode盛水最多的容器 超详细解析
Leecode盛水最多的容器 超详细解析
81 0
Leecode盛水最多的容器 超详细解析

热门文章

最新文章