双指针算法实例4(盛最多水的容器)

news2024/9/28 17:34:19

题目:

给定一个长度为 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

算法原理:

 盛水量=边界数值的下标相减*两边界中值较小者

1 left指针指定左边界 right指针指定右边界

   用此时的两边界得到一个盛水量mul

2 跳过左右边界中的较小值,每得到一个新的左右边界组合,就重复步骤1得到新的mul,并与最大值作比较,大于则更新最大值

 因为不管左右边界中的任意一方向内移动,做出变更,都会使得宽减小,但是高还未定

   这里假设初始时左边界<右边界

  a 若是左边界不动,右边界向内移动(保留左边界):

     若右边界数值大于左边界,高则依然是左边界,不变,减小的宽*不变的高-->体积变小

     若右边界数值小于左边界,高则变小,减小的宽*变小的高-->体积变小

     综上,左边界与除了最初右边界以外的任意一个组合,所得盛水量一定小于左边界与最初始右边界所得盛水量,那么这个左边界也就没必要继续进行组合了,left++

 b 若是右边界不动,左边界向内移动(保留右边界):

    若左边界数值大于右边界,高变成右边界的数值,相较于原来高是左边界的数值,变大

     变大的高*减小的宽-->体积不能确定一定小于最初始的体积

     那么说明右边界有可能与除了最初的左边界以外的数值组合所得体积>初始体积,要保留右边界

 代码实现:

class Solution 
{
public:
    int maxArea(vector<int>& height) 
    {
        int n = height.size();
        int left = 0;
        int right = n-1;
        int Max = 0;
        while(left<right)
        {
            int mul = (right-left)*min(height[left],height[right]);
            Max = max(Max,mul);
            if(height[left]<height[right])
            {
                left++;
            }
            else
            {
                right--;
            }
        }
        return Max;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/929192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

基于STM32的天然气煤气检测报警仿真设计 演示视频1.主要功能2.仿真3. 程序4. 资料清单&下载链接 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;C0081 演示视频 基于STM32的天然气煤气可燃气体检测报警仿真设计 1.主要…

python: pywin32 + cef 模仿 mdict 界面

pip install pywin32 ; pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl (69.0 MB) Successfully installed cefpython3-66.1 cd \Python37\Lib\site-packages\cefpython3\examples copy pywin32.py win_cef.py 用的图片在 \Python37\Lib\site-packages…

R语言如果列表中有列表,且每个子列表有一个向量:如何转变为仅仅一个列表里面含有向量

引言 有些时候&#xff0c;比如批量读取表格中的某一列的时候&#xff0c;最终你会得到列表里面装列表&#xff0c;且每个列表里面只有一个向量的情况。我们的目标是不要中间这一层列表&#xff0c;而是直接变成列表-向量这种简单的结构&#xff0c;如何完成呢。我觉得有很多方…

深度解析:Stable Diffusion中negative prompt是如何作用的?

Diffusion Models专栏文章汇总:入门与实战 前言:stable diffusion推理的时候可以用negative prompt(负面提示词)去除我们不想出现的元素,这种方法的背后原理是什么?如何用代码实现呢?这篇博客就深入探讨这个问题。 目录 从分类器引导技术开始说起

参考测试信号:吉布斯效应

吉布斯效应是一种信号处理中常见的现象&#xff0c;特别在信号的突变或跃变时会显现出来。它在信号的瞬时过渡中可能引起频谱中的振铃或震荡&#xff0c;从而导致频谱图中出现不期望的高频成分。这种现象主要发生在信号经过截断或窗口函数等非平滑操作时&#xff0c;例如信号的…

TouchGFX之移植

在前面篇幅的基础上移植TouchGFX 1.配置FreeRTOS 2.使用touchgfx需要打开CRC 3.配置TouchGFX 4.生成代码&#xff0c;工程目录下多了TouchGFX文件夹 5.打开TouchGFX Designer工程 6.放置box控件&#xff0c;将颜色设置为红色 7.运行模拟器&#xff0c;生成代码 8.打开keil工程&…

GPU版本pytorch(Cuda12.1)安装教程

我们通过Pytorch官网安装torch的时候&#xff0c;会发现常常由于网速问题安装不成功&#xff0c;下面提供一种简单的方法可以成功安装Cuda12.1&#xff0c;亲测有效。 目录 一、常规方法 二、有效方法 2.1 创建并激活虚拟环境 2.2 添加清华源 2.3 安装torch 一、常规方法…

adb使用总结

adb连接到模拟器 adb devices 打开模拟器&#xff0c;找到设置。 多次点击版本号&#xff0c;切换到开发者模式 搜索进入开发者选项 开启USB调试 此时在终端输入adb devices就连接上了 使用adb查看安卓手机架构 adb shell getprop ro.product.cpu.abi 进入安卓手机的shell …

Vue快速入门以及基础标签使用

目录 开始示例el挂载点data数据对象 vue基本标签v-textv-htmlv-on计数器示例实现v-showv-ifv-bind图片切换示例v-forv-on补充v-model axios网络请求axios基本使用vue中使用axios 开始示例 1.首先在html页面中引入vue的生产环境&#xff0c;在body标签中粘上下面代码 <scrip…

wordpress搭建博客教程总结_01主题配置

目前搭建效果站 薪火相传 (yuetan.wang) 日间 月间 爱心 页面、 爱心冲击波! (yuetan.wang) 好看的主题分享 个人博客主题分享(WordPress) – Echo小窝 博客主要效果 1. Argon

Meta 推出 SeamlessM4T,无缝翻译和转录语音和文本

SeamlessM4T允许跨语音和文本单元进行评估的 BLASER 2.0 进行测试时&#xff0c;与目前最先进的语音到文本任务模型相比&#xff0c;SeamlessM4T 模型在语音到文本任务中对抗背景噪声和说话者变化的表现更好 Meta 宣布推出 SeamlessM4T&#xff0c;一种基础的多语言和多任务模…

网络编程——套接字和字节序

目录 一、BSD套接字接口1.1 套接字类型1.2 套接字的位置 二、字节序2.1 大小端2.2 大小端判断2.3 主机字节序和网络字节序2.4 字节序转换函数 一、BSD套接字接口 BSD套接字接口是BSD的进程间通信的方式&#xff0c;它不仅支持各种形式的网络应用而且它还是一种进程间通信的机制…

如何撰写具有传播力的品牌软文?

企业为了能将自己的品牌宣传推广出去&#xff0c;不论是在品牌初创还是成熟阶段都会撰写很多的新闻软文稿件发布在各大媒体平台上&#xff0c;为的就是能起到持续宣传和影响的效果&#xff01; 软文不但要求短小精悍&#xff0c;更注重内容的精准。不管是什么类型的文章&#…

[当前就业]2023年8月25日-计算机视觉就业现状分析

计算机视觉就业现状分析 前言&#xff1a;超越YOLO&#xff1a;计算机视觉市场蓬勃发展 如今&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;新版本的发布周期很快&#xff0c;每次迭代的性能都优于其前身。每 3 到 4 个月就会推出一个升级版 YOLO 变体&#xf…

计网第四章(网络层)(三)

IPV4地址的应用规划&#xff1a; 定长的子网掩码FLSM&#xff1a; 使用同一个子网掩码划分子网&#xff0c;每个子网所分配的IP地址数量相同&#xff0c;造成IP地址的浪费。 变长的子网掩码VLSM&#xff1a; 使用不同的子网掩码划分子网&#xff0c;每个子网所分配的IP地址…

ensp-Ipv6配置配置

ensp-Ipv6配置配置 &#x1f4ce;ipv6.zip&#x1f4ce;Ipv6 网络.docx

n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

神经网络架构:最新进展和未来挑战

文章目录 1. 神经网络架构的演化历程1.1 感知机&#xff08;Perceptron&#xff09;1.2 多层感知机&#xff08;Multi-layer Perceptron&#xff0c;MLP&#xff09;1.3 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;1.4 循环神经网络&…

pwn学习(1)攻防世界-hello_pwn

下载链接&#xff1a; https://adworld.xctf.org.cn/challenges/list 主函数分析&#xff1a; 查看读入数据和比较数据的位置&#xff0c;会发现问题&#xff0c;他们是挨着的&#xff0c;且相差4个字节&#xff0c; 根据main()函数可以知道&#xff0c;dword_60106C是‘nua…

win10系统marven的安装与配置

一、安装jdk-8u191-windows-x64.exe 新建系统环境变量JAVA_HOME并配置Java搜索路径位置 二、下载apache-maven-3.9.4解压到C盘 https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.zip 三、新建环境变量MARVEN_HOME和添加搜索路径 四、查看版本…