对撞双指针(一) 盛水最多的容器

news2024/9/30 20:22:11

描述

给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水

1.你不能倾斜容器

2.当n小于2时,视为不能形成容器,请返回0

3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1

数据范围:

0<=height.length<=1050<=height.length<=105

0<=height[i]<=1040<=height[i]<=104

如输入的height为[1,7,3,2,4,5,8,2,7],那么如下图:

 【解法一】O(N^2)解法

class Solution {
public:
    int maxArea(vector<int>& height) {
        // write code here
        int n = height.size();
        if(n < 2)return 0;
        int res = 0;
        for(int i = 0; i < n-1; i++)
        {
            for(int j = i+1; j < n; j++)
            {
                int _minheight = min(height[i], height[j]);
                res = max(res, (j-i)*_minheight);
            }
        }
        return res;
    }
};

【解法二】双指针对撞

这道题利用了水桶的短板原理,较短的一边控制最大水量,因此直接用较短边长乘底部两边距离就可以得到当前情况下的容积。但是要怎么找最大值呢?

可以利用贪心思想:我们都知道容积与最短边长和底边长有关,与长的底边一定以首尾为边,但是首尾不一定够高,中间可能会出现更高但是底边更短的情况,因此我们可以使用对撞双指针向中间靠,这样底边长会缩短,因此还想要有更大容积只能是增加最短变长,此时我们每次指针移动就移动较短的一边,因为贪心思想下较长的一边比较短的一边更可能出现更大容积。

class Solution {
public:
    int maxArea(vector<int>& height) {
        // write code here
        if(height.size()<2)return 0;
        int res = 0;
        int left = 0, right = height.size()-1;
        while(left < right)
        {
            int capacity = min(height[left], height[right])*(right-left);   //当前容量
            res = max(res, capacity);   // 每次维护一个最大值
            if(height[left] < height[right]) // 短板移动
                left++;
            else
                right--;
        }
        return res;
    }
};

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

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

相关文章

Spring Security 源码解读:OAuth2 Authorization Server

样例代码请参考&#xff1a;spring-security-oauth2.0-server-sample Spring Authorization Server刚发展不久&#xff0c;还没有springboot版本&#xff0c;而Resource Server有&#xff0c;但是两个底层很多不兼容&#xff0c;会重复引入不同版本的jar包。 另外&#xff0c…

Redis之哨兵模式

什么是哨兵模式&#xff1f; Sentinel(哨兵)是用于监控Redis集群中Master状态的工具&#xff0c;是Redis高可用解决方案&#xff0c;哨兵可以监视一个或者多个redis master服务&#xff0c;以及这些master服务的所有从服务。 某个master服务宕机后&#xff0c;会把这个master下…

安卓小游戏:俄罗斯方块

安卓小游戏&#xff1a;俄罗斯方块 前言 最近用安卓自定义view写了下飞机大战、贪吃蛇、小板弹球三个游戏&#xff0c;还是比较简单的&#xff0c;这几天又把俄罗斯方块还原了一下&#xff0c;写了一天&#xff0c;又摸鱼调试了两天&#xff0c;逻辑不是很难&#xff0c;但是…

机械革命z2黑苹果改造计划第三番-macOS键盘快捷键Win键盘适配

macOS键盘快捷键&Win键盘适配 键盘区别 首先下图是苹果妙控键盘无指纹版&#xff0c;官网售价699&#xff0c;穷学生的我是真的买不起 然后下图是我正在使用的机械键盘ikbc w200 87键版本 可以看出两者在键位排列上的区别主要在于 win/command 键&#xff0c;在macOS中大…

12 个华丽的 UI 组件,为您提供设计灵感✨

现代 Web 开发已转向基于组件的架构&#xff0c;从而实现更快的开发、更多的控制和更低的维护成本。在本文中&#xff0c;我精心挑选了一些我最喜欢的 UI 组件作为您的设计灵感。我尝试在我们的开发工作流程中包含不同类型的一些最常用的组件&#xff0c;包括卡片、文本、按钮、…

本人使用的idea插件

文章目录&#x1f68f; 本人使用的idea插件&#x1f6ac; pojo to Json&#x1f6ac; GsonFormatPlus&#x1f6ac; EasyYapi&#x1f6ac; Chinese (Simplified) Language Pack / 中文语言包&#x1f6ac; MyBatis Log Free&#x1f6ac; MyBatisPlusX&#x1f6ac; Statistic…

软件测试如何获得高薪?

软件测试如何获得高薪&#xff1f; 目录&#xff1a;导读 测试基础理论/测试设计能力 业务知识 行业技术知识 数据库 掌握编程语言 搞定自动化测试 质量流程管理 下面谈谈不同level的测试工程师应具备的基本能力 第一个&#xff1a;我们称之为测试员/测试工程师 第二…

Linux C/C++ 调试的那些“歪门邪道”

无数次被问道&#xff1a;你在终端下怎么调试更高效&#xff1f;或者怎么在 Vim 里调试&#xff1f;好吧&#xff0c;今天统一回答下&#xff0c;我从来不在 vim 里调试&#xff0c;因为它还不成熟。那除了命令行 GDB 裸奔以外&#xff0c;终端下还有没有更高效的方法&#xff…

【正点原子FPGA连载】第十二章PS端RTC中断实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十二章PS端RTC…

免费链接投票作品投票通道线上投票活动制作网络投票制作

“文明健康、绿色环保”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说&#xff0c;公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给…

node.js+vue大学生校园论坛系统vscode mysql

技术难点 &#xff08;1&#xff09;没有待测试程序文本、控制流程图及有关要求、规范等文件。 &#xff08;2&#xff09;测试用例及测试例程的分析、理解和设计。 &#xff08;3&#xff09;没有开发组织的配合&#xff0c;没有软件测试团队之间的讨论。 &#xff08;4&#…

九龙证券|巴菲特最新操作曝光!刚建仓就大幅减持,台积电盘后暴跌5%

当地时间2月14日&#xff0c;美股三大指数收盘涨跌纷歧。道指跌0.46%&#xff0c;标普500指数跌0.03%&#xff0c;纳指涨0.57%。 大型科技股多数上涨&#xff0c;特斯拉涨7.51%&#xff0c;领涨标普500指数成份股。热门中概股走弱&#xff0c;纳斯达克中国金龙指数跌0.55%&…

【零基础入门前端系列】—CSS介绍(九)

【零基础入门前端系列】—CSS介绍&#xff08;九&#xff09; 一、为什么需要CSS&#xff1f; 使用Css的目的就是让网页具有美观一致的页面, 另外一个最重要的原因是内容与格式 分离,在没有CSS之前&#xff0c;我们想要修改HTML元素的样式需要为每个HTML元素单独定义 样式属性…

用户认证-cookie和session

无状态&短链接 短链接的概念是指&#xff1a;将原本冗长的URL做一次“包装”&#xff0c;变成一个简洁可读的URL。 什么是短链接-> https://www.cnblogs.com/54chensongxia/p/11673522.html HTTP是一种无状态的协议 短链接&#xff1a;一次请求和一次响应之后&#…

女生可以参加IT培训吗?

2023年了&#xff0c;就不要把性别当作选择专业的前提条件了。虽然这句话说过很多次了&#xff0c;作为IT行业来说&#xff0c;是非常欢迎女生的加入&#xff1b;尤其是整天都是面对一大堆男攻城狮&#xff0c;工作氛围一点都不活跃&#xff0c;反而显得压抑和杂乱&#xff0c;…

在Windows上安装Scala

文章目录Windows上安装Scala&#xff08;一&#xff09;到Scala官网下载Scala&#xff08;二&#xff09;安装Scala安装向导&#xff08;三&#xff09;配置Scala环境变量&#xff08;四&#xff09;测试Scala是否安装成功1、查看Scala版本2、启动Scala&#xff0c;执行语句Win…

什么是装运单IFTMIN?

符合EDIFACT国际报文标准的IFTMIN主要用于传输电子运输订单&#xff0c;这些装运单作为EDI数据交换的一部分&#xff0c;由客户或托运人发送给物流服务提供商。通过EDI传输的运输信息可以被用来计划当前所需的运输能力&#xff0c;并且物流服务提供商也可以据此提前将包装材料准…

【正点原子FPGA连载】第十一章PL SYSMON测量输入模拟电压 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十一章PL SYSM…

使用注意力机制的seq2seq

注意力机制在NLP中的应用&#xff0c;是早期工作之一 1.为什么使用注意力机制 ①在机器翻译的时候&#xff0c;每个生成的词可能相关于源句子不同的词 ②语言翻译的时候&#xff0c;中英文存在倒装句&#xff0c;几个相同意思的句子中的词的位置可能近似的对应。翻译句子某部分…

Lp正则化

一、L1 和 L2范数&#xff08;norm&#xff09;A norm is a mathematical thing that is applied to a vector. The norm of a vector maps vector values to values in [0,∞). In machine learning, norms are useful because they are used to express distances: this vect…