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

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

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点解直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣算法分析
  • 3️⃣代码编写

1️⃣题目描述

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

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

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

说明:你不能倾斜容器。

示例1:

在这里插入图片描述

输入:[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的方式)。
即:

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;}
};
http://www.lryc.cn/news/187916.html

相关文章:

  • 数据结构全集介绍
  • 力扣刷题-字符串-反转字符串
  • 【CCNP】第七章 动态路由协议-BGP
  • java学习--day24(stream流)
  • Multi-Grade Deep Learning for Partial Differential Equations
  • Docker部署rustdesk
  • win1011安装MG-SOFT+MIB+Browser+v10b
  • PCL点云处理之Pcd文件读取、法线与曲率计算、多线程加速、属性字段合并 (二百零八)
  • JavaEE-文件IO操作
  • 二蛋赠书四期:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》
  • MySQL数据库基本操作-DQL-排序查询
  • 这是一篇测试文章
  • Ubuntu plt画图 新罗马字体网格marker刻度朝内
  • flutter布局中的一些细节
  • 论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计
  • 第二证券:汽车产业链股活跃,恒勃股份、博俊科技“20cm”涨停
  • 孙帅Spring源码
  • jenkins工具系列 —— 插件 使用Changelog获取commit记录
  • 【JavaScript】浅拷贝与深拷贝
  • 如何下载IEEE Journal/Conference/Magazine的LaTeX/Word模板
  • nvidia 驱动问题
  • PDF编辑和OCR文字识别工具ABBYY FineReader PDF
  • 什么是网络流量监控
  • ubuntu 终端 中文显示unicode码、乱码
  • 作用域理解
  • Stream 流式编程创建及其常用操作方法
  • Can 通信-协议
  • rustlings本地开发环境配置
  • 希尔排序:优化插入排序的精妙算法
  • 新能源电动汽车安全性能检测中采集车架号及BMS电池数据的难点