当前位置: 首页 > news >正文

leetcode_双指针 11. 盛最多水的容器

11. 盛最多水的容器

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

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

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

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

1. 双重循环(记录用)

class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        res = []
        for left in range(len(height)):
            for right in range(left, len(height)):
                a = right - left
                b = min(height[left], height[right])
                s = a * b
                res.append(s)

        return max(res)
  • 时间复杂度: O(n^2)
  • 空间复杂度: O(n^2)

2. 双指针

  • 使用对向双指针来优化时间复杂度,一个指向数组的开头(left),另一个指向数组的末尾(right),当两个指针相遇时,循环停止。
class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        max_area = 0
        left, right = 0, len(height) - 1 # 对向双指针
        
        while left < right:
            current_area = (right - left) * min(height[left], height[right])  # 计算当前容器的容量
            max_area = max(max_area, current_area)  # 更新最大容量
            
            # 移动较短的那条线段的指针
            if height[left] < height[right]:
                left += 1
            else:
                right -= 1
                
        return max_area
  • 时间复杂度: O(n),只需遍历数组一次
  • 空间复杂度: O(1)
http://www.dtcms.com/a/81441.html

相关文章:

  • 两市总的净流出和净流入来分析情况
  • OO_Unit1
  • 【C++11】左值引用、右值引用和移动语义
  • 20250321在荣品的PRO-RK3566开发板的buildroot系统下使用ll命令【直接编译进IMG】
  • 《人脸识别技术应用安全管理办法》
  • AI风向标《AI与视频制作全攻略:从入门到精通实战课程》
  • [AI建模] 使用Pinokio本地化部署混元2D到3D AI建模服务
  • 响应式页面布局:打造无缝跨屏体验的关键技术
  • 基于Spring Boot的公司资产网站的设计与实现(LW+源码+讲解)
  • Win NAS 分享功能:精准、安全的内容共享
  • 无锡哲讯智能科技有限公司:数字化转型的赋能者
  • C语言基础—指针变量与变量指针
  • 【c++】异常处理
  • mysql 导入全量备份
  • Python Web 框架 Django、Flask 和 FastAPI 对比
  • 【负载均衡系列】LVS
  • Swagger 笔记
  • Centos 7 安装VNC服务
  • C# WinForms 中的回调:从性能到技术层面的全面解析
  • HTTP代理IP技术详解及在Web开发中的应用
  • 深入解析MySQL存储引擎:从InnoDB到MyISAM的技术全景
  • 单页响应式 图片懒加载HTML页面
  • 2025年- G23-Lc97-104.二叉树的最大深度-java版(递归调用左右子树)
  • 基于Python编程语言实现“机器学习”,用于车牌识别项目
  • 林阳域管理系统功能简介
  • Oracle 数据库安全评估(DBSAT)简明过程
  • Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)
  • Python在数据科学中的应用:完整指南
  • 【高并发内存池】第三弹---构建Central Cache的全方位指南——从整体设计到核心实现
  • 《C++11 基于CAS无锁操作的atomic原子类型》