【算法|双指针系列No.4】leetcode11. 盛最多水的容器

这篇具有很好参考价值的文章主要介绍了【算法|双指针系列No.4】leetcode11. 盛最多水的容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
【算法|双指针系列No.4】leetcode11. 盛最多水的容器,LeetCode,手撕算法系列专栏,算法,leetcode,双指针

点解直接跳转到该题目

1️⃣题目描述

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

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

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

说明:你不能倾斜容器。

示例1:

【算法|双指针系列No.4】leetcode11. 盛最多水的容器,LeetCode,手撕算法系列专栏,算法,leetcode,双指针

输入:[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️⃣算法分析

通过不断地调整较短的边界来寻找可能的最大容量。因为容器的容量受限于较短的边界,所以选择移动较短的边界可以增加容器的高度,有可能得到更大的容量。通过不断缩小指针之间的宽度,直到指针重合,即可得到最大容量。

容器容量:v = s * h,由于我们这里不断移动两个“指针”,所以 s 是不断变小的,那么问题来了,我们要移动哪个指针呢(是向右移动左指针的,还是向左移动右指针呢?),我们要知道无论我们移动哪一个指针容器的 s 都是减小的,此时如果要使得容器容量增大,我们需要移动指针指向的值较小的那个指针。举个例子(1,9),我们此时就需要向右移动左指针了,因为我们只有移动左指针才有可能使得容器的容器容量变大(即通过增加h的方式)。
即:文章来源地址https://www.toymoban.com/news/detail-736500.html

if(height[l] < height[r]) l++;
else r--; 

3️⃣代码编写

class Solution {
public:
    int maxArea(vector<int>& height) {
        int l = 0,r = height.size() - 1,ret = 0;
        while(l < r)
        {
            int v = (r - l) * min(height[l],height[r]);
            ret = max(v,ret);
            if(height[l] < height[r]) l++;
            else r--; 
        }
        return ret;
    }
};

到了这里,关于【算法|双指针系列No.4】leetcode11. 盛最多水的容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode_11. 盛最多水的容器

    11. 盛最多水的容器 - 力扣(LeetCode) https://leetcode.cn/problems/container-with-most-water/         这题就是典型的是一道很经典的面试题,最优的解法是双指针,但很多人在第一次看到这题的时候很难想到用双指针来解(比如我)。好了,话不多说上解法: 首先我们设两个left和righ

    2024年02月14日
    浏览(30)
  • 【算法专题】双指针—盛最多水的容器

      分析这个题目不难得出一个 容积公式   解法一:暴力枚举(超时) 套用上述的容积公式,使用 两个for循环 来枚举出所有可能的情况,再挑出最大值即可,但是这种写法会超时,导致不通过。时间复杂度是O(n^2) 可以自己去尝试一下。  解法二:双指针  设两个指针 left,

    2024年02月06日
    浏览(35)
  • 【LeetCode力扣】11. 盛最多水的容器 (中等)

      目录 1、题目介绍 2、解题 2.1、解题思路  2.2、图解说明  2.3、解题代码 原题链接: 11. 盛最多水的容器 - 力扣(LeetCode) 示例 2: 提示: n == height.length 2 = n = 105 0 = height[i] = 104 这道题最优的方法就是用双指针,我们可以用指针 left 和指针 right 分别指向数组 height[ ] 的第一

    2024年02月06日
    浏览(36)
  • 【算法】双指针求解盛最多水的容器

    Problem: 11. 盛最多水的容器 首先我们来解析一下本题 题目中说到,要找出其中的两条线, 使得它们与 x 轴共同构成的容器可以容纳最多的水 。 那我们现在来看最外侧的两根,一个高度为8,一个则为7,那我们肯定选择高度为7的, 如果选择8的话就会出现溢出的问题 ;我们这

    2024年02月11日
    浏览(31)
  • 【算法专题突破】双指针 - 盛最多水的容器(4)

    目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 题目链接:11. 盛最多水的容器 - 力扣(Leetcode)   这道题目也不难理解, 两边的柱子的盛水量是根据短的那边的柱子决定的, 而盛水量就是短的柱子的高度 * 宽度即可。  这道题可以用暴力枚举,两层for循环,肯定是可

    2024年02月10日
    浏览(28)
  • LeetCode_11_中等_盛最多水的容器

    给定一个长度为 n n n 的整数数组 h e i g h t height h e i g h t 。有 n n n 条垂线,第 i i i 条线的两个端点是 ( i , 0 ) (i, 0) ( i , 0 ) 和 ( i , h e i g h t [ i ] ) (i, height[i]) ( i , h e i g h t [ i ]) 。 找出其中的两条线,使得它们与 x x x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的

    2024年01月24日
    浏览(35)
  • 【优选算法】双指针 -- 快乐数 和 盛最多水的容器

    前言: 🎯个人博客:Dream_Chaser 🎈刷题专栏:优选算法篇 📚本篇内容:03快乐数 和 04盛最多水的容器 目录 一、快乐数(medium) 1. 题⽬链接:202. 快乐数 2. 题⽬描述: 3. 题⽬分析: 4.算法原理 二、盛最多水的容器 1. 题⽬链接:11.盛最多水的容器 - 力扣(LeetCode) 2. 题⽬描述

    2024年04月17日
    浏览(25)
  • 【算法挨揍日记】day02——双指针算法_快乐数、盛最多水的容器

    202. 快乐数 https://leetcode.cn/problems/happy-number/ 编写一个算法来判断一个数  n  是不是快乐数。 「快乐数」  定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是  无限循环  但始终变不到 1。 如果这

    2024年02月11日
    浏览(27)
  • 【力扣算法12】之 11. 盛最多水的容器 python

    给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明 :你不能倾斜容器。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂

    2024年02月16日
    浏览(38)
  • 11. 盛最多水的容器

    给定一个长度为  n  的整数数组  height  。有  n  条垂线,第  i  条线的两个端点是  (i, 0)  和  (i, height[i])  。 找出其中的两条线,使得它们与  x  轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明: 你不能倾斜容器。 示例 1: 示例 2: 提示

    2024年01月20日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包