LeetCode 75 第十二题(11)盛最多水的容器

news2024/11/18 5:29:44

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

配合着示例给出的图片我们可以得知找出盛水最多的容器是什么意思,给一个数组,找出数组中两个元素能围成的最大的矩阵面积是多少.

比较直观的想法是套两层for循环暴力解出来,但是这题是中等难度题,一般中等题是没法用暴力得出的,会超时.

因此我们可以使用双指针来求解,左右指针分别指向数组的两端,然后求左右指针围成的面积,若是比原来得到的最大面积更大则替换.

然后如果左指针指向的元素比右指针指向的元素更小(左边比较矮)则将左指针右移,反之右指针左移,直到左右指针相遇跳出循环.

那么为什么要这么做呢,为什么左边比较矮我就要移动左指针呢,万一右指针左移能得到更大的结果呢?

其实我们稍微思考一下就可以得出结论,左边更矮就只能移动左边才有可能得到更大的结果.因为面积是由底乘高得出的,而只要是移动指针,底就一定是减小的,那么要得到更大的结果就只能指望得到更大的高,而矩阵的高是由最矮的边决定的,因此如果不改变矮边,则不但会使得底边变得更短,同时矩阵的高度也不可能大于短边(矩阵高度等于最矮边),因此谁更矮就移动谁.

代码:

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

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

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

相关文章

OSI七层模型——第2层数据链路层

目录 1 数据链路层的用途 1.1 数据链路层 1.2 IEEE 802LAN/MAN 数据链路子层 1.3 提供介质访问 1.4 数据链路层标准 2 拓扑 2.1 物理和逻辑拓扑 2.2 WAN 拓扑 2.3 点对点 WAN 拓扑 2.4 LAN 拓扑 2.5 半双工和全双工通信 2.6 访问控制方法 2.7 基于竞争的访问 - CS…

Excel录制宏批处理:避免重复工作,轻松提升效率

在处理大量数据时&#xff0c;我们常常需要进行一些重复且繁琐的操作&#xff0c;这不仅费时费力&#xff0c;还容易出错。而Excel的录制宏批处理功能可以帮助我们避免这些重复的工作&#xff0c;提高工作效率。本文将为您介绍如何使用Excel的录制宏批处理功能&#xff0c;让您…

【CesiumJS材质】(1)圆扩散

效果示例 最佳实践&#xff1a; 其他效果&#xff1a; 要素说明&#xff1a; 代码 /** Date: 2023-07-21 15:15:32* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-27 11:13:17* FilePath: \cesium-tyro-blog\src\utils\Material\EllipsoidFadeMaterialP…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一&#xff0c;生成资源 在 Kubernetes 中&#xff0c;我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象&#xff0c;例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例&#xff0c;用于创建一个 Nginx Pod&#xff1a; apiVersion: v1 kind: Pod m…

基于Velocity开发代码生成器

一、引言 在项目开发中&#xff0c;我们有碰到大量的简单、重复的增删改查需求&#xff0c;通过阅读若依框架https://github.com/yangzongzhuan/RuoYi 的代码生成器实现&#xff0c;结合我项目所用的技术栈&#xff0c;开发出本项目的代码生成器。 二、Velocity 简单介绍 1、…

【C++入门】浅谈类、对象和 this 指针

文章目录 一、前言二、类1. 基本概念2. 类的封装3. 使用习惯成员函数定义习惯成员变量命名习惯 三、对象1. 基本概念2. 类对象的存储规则 四、this 指针1. 基本概念2. 注意事项3. 经典习题4. 常见面试题 一、前言 在 C 语言中&#xff0c;我们用结构体来描述一个事物的多种属性…

Markdown常用标签及其用途-有示例

Markdown常用标签及其用途 Markdown是一种轻量级标记语言&#xff0c;具有简洁易读的特点。下面是一些常用的Markdown标签以及它们的用途&#xff0c;并附带一些示例&#xff1a; 标题 用于创建不同级别的标题&#xff0c;可通过添加一到六个#符号来表示不同级别的标题。 #…

yolov5的后处理解析

由于最近实习项目使用到了yolov5&#xff0c; 发现对yolov5的后处理部分不太熟悉&#xff0c;为防止忘记&#xff0c;这里简单做个记录。 在yolov5里&#xff0c;利用FPN特征金字塔&#xff0c;可以得到三个加强特征层&#xff0c;每一个特征层上每一个特征点存在3个先验框&am…

自动化测试到底用Python还是Java?因为这个我和同事闹翻了

现在的软件测试工程师&#xff0c;必备的技能之一就是需要掌握自动化。对于那些不会自动化的测试工程师来说&#xff0c;被淘汰的概率会越来越大。因此大家通过各种途径开始学习自动化。但是刚开始都会面临一个棘手的问题&#xff1a;应该学习哪种编程语言进行自动化测试呢&…

Echarts 显示双Y轴

option 对象 option {yAxis: [{ name: 重量&#xff08;kg&#xff09;, position: left, type: value },{ name: 金额&#xff08;元&#xff09;, position: right, type: value }],xAxis: { type: category },legend: {},series: [{name: 剩余量,label: { normal: { show…

2023年全国程序员薪酬排行天梯榜

文章目录 ⭐️ 2023年全国程序员薪酬排行天梯榜 在过去很长的一段时间内&#xff0c;网上总有一个声音&#xff1a;“大厂裁员”、“程序员内卷严重”、“程序员人员过盛”、“35岁中年危机”、“码农吃的青春饭”、“互联网寒冬” 等等等等。 讲道理&#xff0c;我对这种人为的…

ViT-vision transformer

ViT-vision transformer 介绍 Transformer最早是在NLP领域提出的&#xff0c;受此启发&#xff0c;Google将其用于图像&#xff0c;并对分类流程作尽量少的修改。 起源&#xff1a;从机器翻译的角度来看&#xff0c;一个句子想要翻译好&#xff0c;必须考虑上下文的信息&…

Redisson源码分析(1)源码下载及本地调试

目录 前言 源码下载 其他准备 前言 新开个坑&#xff0c;关于Redisson源码分析的&#xff0c;感觉不记一下&#xff0c;看完以后&#xff0c;过段时间又忘了... 源码下载 Redisson&#xff1a;https://github.com/redisson/redisson 本次源码我这下载的是3.17.7版本 3.…

Java期末复习基础题编程题

文章目录 基础题记录实践题记录&&与C比较题目1&#xff1a;题目2&#xff1a;题目3&#xff1a; 基础题记录 编译型语言&#xff1a; 定义&#xff1a;在程序运行之前&#xff0c;通过编译器将源程序编译成机器码(可运行的二进制代码)&#xff0c;以后执行这个程序时&…

【图像分类】CNN+Transformer结合系列.2

介绍几篇利用CNNTransformer实现图像分类的论文&#xff1a;CMT&#xff08;CVPR2022&#xff09;&#xff0c;MaxViT(ECCV2022)&#xff0c;MaxViT&#xff08;ECCV2022&#xff09;&#xff0c;MPViT&#xff08;CVPR2022&#xff09;。主要是说明Transformer的局限性&#x…

【DFS】CF598D

Problem - D - Codeforces 题意&#xff1a; 思路&#xff1a; 直接搜索即可&#xff0c;对于每个连通块都去染色&#xff0c;对于每一个色块都维护这个色块的墙壁数 或者麻烦点用并查集维护也行 Code&#xff1a; int n, m, k; bool st[N][N]; char g[N][N]; int ans[N *…

C#时间轴曲线图形编辑器开发2-核心功能实现

目录 三、关键帧编辑 1、新建Winform工程 &#xff08;1&#xff09;界面布局 &#xff08;2&#xff09;全局变量 2、关键帧添加和删除 &#xff08;1&#xff09;鼠标在曲线上识别 &#xff08;2&#xff09;键盘按键按下捕捉 &#xff08;3&#xff09;关键帧添加、删…

脉冲信号测试应如何选择示波器带宽?

示波器模拟带宽的定义大家都比较熟悉&#xff0c;是针对于正弦波信号定义的。从频域上看&#xff0c;正弦波信号的频谱就是单根谱线&#xff0c;只要示波器的带宽不小于信号的频率&#xff0c;那么就可以有效观测到波形。若要追求更高的幅度测试精度&#xff0c;则可以按照5倍法…

全球视频编码领域顶级大赛放榜,网易云信首次参赛即斩获H.265赛道多项指标第一

近日&#xff0c;2022 MSU 世界视频编码器大赛正式放榜&#xff0c;网易云信首次参赛就获得骄人成绩&#xff0c;自研的结合智码超清技术的 NE265E 编码器以公开身份参赛&#xff0c;在 H.265 赛道下获得多项指标第一名。 首次参赛&#xff0c;斩获 3 项指标第一 MSU Video Co…

【JVM】详细解析java创建对象的具体流程

目录 一、java创建对象的几种方式 1.1、使用new关键字 1.2、反射创建对象 1.2.1、Class.newInstance创建对象 1.2.2、调用构造器再去创建对象Constructor.newInstance 1.3、clone实现 1.4、反序列化 二、创建对象的过程 2.1、分配空间的方式 1、指针碰撞 2、空闲列表 …