首页 > 编程语言 >【算法题】11. 盛最多水的容器-力扣(LeetCode)

【算法题】11. 盛最多水的容器-力扣(LeetCode)

时间:2024-09-24 21:49:51浏览次数:11  
标签:11 容器 height 力扣 最多水 移动 短边

【算法题】11. 盛最多水的容器-力扣(LeetCode)

1.题目

下方是力扣官方题目的地址

11. 盛最多水的容器

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

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

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

**说明:**你不能倾斜容器。

示例 1:

img

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

示例 2:

输入:height = [1,1]
输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

2.题解

思路

这题很容易想到暴力解法,就是利用两个for循环,枚举出所有的情况,维护一个最大值

不过该题有更好的解法:双指针

首先我们初始化双指针:一个在最左边、一个在最右边:

在这里插入图片描述

如果哪边短一些,哪边就往中间进一位,维护一个最大值

那么为什么要移动最短的一边呢?

(以下解释并不严谨,主要是有助于更好理解)

面积取决于长(横轴)和宽(纵轴)。在移动的时候,长度必然是减小的,这我们改变不了。

而宽度则取决于我们的指针是如何移动的。而宽度又是由最短边决定的。如果我们移动长边,那么面积必然是减小或者不变的;那如果我们移动短边,由于宽度取决于短边,面积是有可能会变大的。所以我们需要移动短边。

Python代码

class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        l,r=0,len(height)-1
        ans=0
        while l<r:
            ans=max(ans,min(height[l],height[r])*abs(l-r))
            if height[l]>height[r]:r-=1
            else:l+=1
        return ans

3.结语

本人资历尚浅,发博客主要是记录与学习,欢迎大佬们批评指教!大家也可以在评论区多多交流,相互学习,共同成长。

标签:11,容器,height,力扣,最多水,移动,短边
From: https://blog.csdn.net/Janium/article/details/142443669

相关文章

  • 【算法题】53. 最大子数组和-力扣(LeetCode)
    【算法题】53.最大子数组和-力扣(LeetCode)1.题目下方是力扣官方题目的地址53.最大子数组和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-......
  • Day5 JavaWeb知识了解以及每日一题:力扣125.验证回文串
    Day5JavaWeb知识了解以及每日一题:力扣125.验证回文串2024年9月24日20:06:45JavaWeb基础知识TomcatApacheTomcat是一个开源的Servlet容器和Web服务器,它是JavaEE(EnterpriseEdition)的一部分,专门用于运行JavaServlet和JavaServerPages(JSP)。Tomcat的主要功能是接收HTTP......
  • 力扣274.H指数
    题目要求:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇......
  • 力扣题解2207
    大家好,欢迎来到无限大的频道。今日继续给大家带来力扣题解。题目描述(中等)​:字符串中最多数目的子序列给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern ,两者都只包含小写英文字母。你可以在 text 中任意位置插入 一个......
  • Android 11.0 蓝牙音乐获取歌手、歌曲等信息功能实现
    1.前言在11.0的系统rom定制化开发中,在一些功能性开发中,可能会遇到一些蓝牙音乐的项目,所以会要求在手机端获取蓝牙音乐的歌手歌曲的信息功能,这就需要了解Bluetooth的音乐播放功能,然后实现这些获取歌手信息和歌曲详情的功能2.蓝牙音乐获取歌手、歌曲等信息功能实现的核心类pa......
  • C++11新特性:正则表达式
    摘要本文介绍了正则表达式的基础概念,包括元字符、字符类、量词和锚点,展示了其在验证字符串、文本搜索、替换和数据提取中的应用。同时,详细讲解了C++11中正则表达式的使用示例,包括std::regex。正则表达式正则表达式(RegularExpressions)是一种强大的文本处理工具,它使用单个字符......
  • 新一代工业物联网连接:DRP10188300001,DRP10188300002,DRP10188300011,DRP10188300012
    工业以太网连接器能够实现以太网和其他工业协议的物联网连接,覆盖了从企业/云到工厂车间中传感器/执行器的所有操作层面。工业RJ系列模块化以太网插头提供符合ANSI/TIA-568.2-D的CAT6A性能。它在长达100m的应用中支持千兆位以太网协议和10G链路。可现场端接的设计便于组......
  • 勇者斗恶龙:英雄丢失VCOMP110.DLL出错怎么解决?《勇者斗恶龙:英雄》VCOMP110.DLL缺失的完
    当《勇者斗恶龙:英雄》提示丢失VCOMP110.DLL出错时,这通常意味着系统中缺少了这个关键的动态链接库文件,该文件对于游戏的正常运行至关重要。以下是一些解决这一问题的完美修复方法:一、确认问题首先,确认是否真的出现了VCOMP110.DLL文件缺失的错误。这通常会在游戏启动时出现相......
  • 尘埃拉力赛D3D11.dll文件丢失:轻松解决尘埃拉力赛D3D11.dll丢失方案汇总
    当您在尝试启动《尘埃拉力赛》(DiRTRally)时遇到“找不到D3D11.dll”或“D3D11.dll文件丢失”的错误提示,这意味着您的计算机上缺少或损坏了Direct3D11API的一个重要组件。D3D11.dll文件是Windows系统中用于高性能图形渲染的关键文件之一,对于《尘埃拉力赛》这类需要高级图形处......
  • 11、Linux软件安装及使用
    Windows软件安装流程安装检查:检查系统是否满足软件的安装要求,包括操作系统版本、硬盘空间、内存要求等。释放文件:解压安装包中的文件到临时目录。复制可执行文件:将主要的可执行文件复制到指定的安装路径。安装DLL动态链接库/安装服务:根据需要安装动态链接库文件(DLL)和......