首页 > 其他分享 >11. 盛最多水的容器(中)

11. 盛最多水的容器(中)

时间:2024-01-25 14:56:07浏览次数:22  
标签:11 容器 right height 最多水 指针 catchmax left

目录

题目

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

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

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

    说明:你不能倾斜容器。

法一、双指针暴力

  • 用两个指针把所有可能的盛水容器遍历一遍,其中比较更新最大的盛水容器。
class Solution:
    def maxArea(self, height: List[int]) -> int:
        if height is None:  # 如果输入的 height 为 None,返回 0
            return 0
        catchmax = 0  # 初始化保存最大盛水量的变量为 0
        for left in range(len(height)):  # 遍历左指针
            for right in range(left+1, len(height)):  # 遍历右指针,保证右指针在左指针的右侧
                # 计算当前容器的盛水量,取较小高度乘以两指针之间的距离
                catchmax = max(catchmax, (right - left) * min(height[left], height[right]))
        return catchmax  # 返回最大的盛水量
  • 超时

法二、双指针的优化

class Solution:
    def maxArea(self, height: List[int]) -> int:
        if height is None:  # 如果输入的 height 为 None,返回 0
            return 0
        catchmax = 0  # 初始化保存最大盛水量的变量为 0
        left = 0  # 左指针初始位置
        right = len(height) - 1  # 右指针初始位置

        while left < right:  # 当左指针小于右指针时进行循环
            # 计算当前容器的盛水量,取较小高度乘以两指针之间的距离
            catchmax = max(catchmax, (right - left) * min(height[left], height[right]))

            if height[left] < height[right]:  # 如果左指针的高度较小,则将左指针向右移动一位
                left += 1
            else:  # 如果右指针的高度较小或相等,则将右指针向左移动一位
                right -= 1

        return catchmax  # 返回最大的盛水量

标签:11,容器,right,height,最多水,指针,catchmax,left
From: https://www.cnblogs.com/lushuang55/p/17977872

相关文章

  • 11.提交/拉取项目(分支)
    要将Gitee上某个分支下创建的文件夹拉取到本地,可以按照以下步骤进行操作:1.在本地计算机上克隆(Clone)Gitee仓库:gitclone<仓库URL>2.进入克隆的本地仓库目录:cd<本地仓库目录>3.使用以下命令查看所有可用的分支:gitbranch-a4.选择要拉取文件夹的目标分支,并切换到该分支......
  • 用C++11打造智能观察者模式:详解实现步骤完整示例代码
     观察者模式是一种行为设计模式,其中一个对象(主题)维护其依赖对象(观察者)的列表,当主题的状态发生变化时,它通知所有观察者。以下是一个使用C++11实现观察者模式的简单例子:定义观察者接口(Observer): 创建一个观察者接口,该接口包含观察者需要实现的更新方法。这个接口可以包含其他......
  • NanoFramework操作ESP32(一)_基础元器件篇(二十二)_DHT11温湿度传感器
    一、元器件介绍1、针脚用途编号名称功能1VCC电源正2TRIG触发控制信号输入3ECHO回响信号输出4GND电源地2、电气参数 二、示例代码1、代码:元器件的针脚ESP32模块的针脚VCC;供电脚+5VTRIG;发送脚IO17ECHO;接收脚IO16GND......
  • STK容器化
    1.STK容器化目录结构包含Python解释器、STKAPI库、并行计算库与stk相关的安装程序Dockerfile文件#包含Python基础环境FROMcentos:7asstk-engine#用户USERroot#拷贝需要的资源文件#包含内容:2个引擎安装程序压缩文件、1个破解程序目录、rar解压程序#......
  • KY11 二叉树遍历C++
    这个题目思路其实就是先序遍历的变形。相当于沿着先序遍历的顺序跟着构建二叉树就行。然后中序遍历这个树。#include<iostream>#include<string>usingnamespacestd;structtnode{chardata;structtnode*left;structtnode*right;};typedefstructt......
  • CF-1184-E3-最小生成树+倍增+并查集
    1184-E3题目大意给定一个\(n\)个点,\(m\)条边的无向图,边带权。对于每条边,你需要找到最大值\(x\),使得把这条边的权值修改为\(x\)后能够出现在最小生成树上。Solution先把整个图的最小生成树弄出来,然后将边分为树边以及非树边来考虑:非树边:对于一个非树边连接了\(x\)和\(y\)的......
  • windwos10-11打开任意文件弹出警告
    如下打开exe或者视频、图片都弹出警告解决方案输入快捷键win+s换出搜索框输入Internet选项进入安全选项点击自定义级别找到,加载应用程序和不安全文件勾选启用(不安全)然后确定-在点击应用即可......
  • Error Code: 1171. All parts of a PRIMARY KEY must be NOT NULL
    今天建表时候发现报错了:CREATETABLEt3(c1intDEFAULTNULL,c2intDEFAULTNULL,c3intNOTNULL,c4intDEFAULTNULL,PRIMARYKEY(c1,c2,c3))ENGINE=InnoDBDEFAULTCHARSET=utf8mb3ErrorCode:1171.AllpartsofaPRIMARYKEYmustbeNOTNULL;ifyounee......
  • SAP dialog使用选择屏幕+容器展现 步骤+源码
    系统自带的选择都是单选的,但是需求不一定是单选的,那么需要和选择屏幕一样的范围选择要怎么做呢,以下是一个样例,通过查询物料号来展现物料表的数据。9000屏幕创建屏幕设置屏幕类型布局编辑构建一个子屏幕subscreen用于防止选择屏幕,构建一个客制化容器contain用于存放......
  • win11 alt+tab显示图标或缩略图
    ### 在win11版本中调出老版本(Win7)ALT+TAB的方法1、win+r调出运行窗口;2、输入regedit,回车进入注册表编辑器;3、转到HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer注册表位置;4、创建一个名为AltTabSettings的新的32位DWORD值,并将其设置为1。(如果......