leetcode每日一题【Day11】——11. 盛最多水的容器

该博客讨论了一种使用双指针优化算法解决寻找两个垂直线段以最大化容器容积的问题。通过从数组的两端开始,每次都更新较小高度的指针,并根据高度更新最大容积,最终找到能容纳最多水的线段组合。这种方法避免了暴力求解,提高了效率。明日计划将涉及二分查找算法的学习。
摘要由CSDN通过智能技术生成
  • 题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
  • 类型:无序数组找最佳边界
  • 思路:01-分别从首尾开始,构造while循环;02-每次更新高度小的索引.原理是:这样才可能找到更大的容积值,并且每次移动都遵照这个原理.
  • 经验:(1)双层for循环都可以考虑用双指针代替,涉及子串用滑动窗口,涉及有序或无序边界用前后指针,涉及遍历+记录用左右指针;
     def maxArea(self, height: List[int]) -> int:
        left,right=0,len(height)-1
        max_v=0
        while left<right:
            v=min(height[left],height[right])*(right-left)
            max_v=max(max_v,v)
            if height[left]<=height[right]:left+=1
            else:right-=1
        return max_v

明日计划:
二分查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值