【算法专题】双指针—盛最多水的容器

news2024/12/1 0:42:37

一、题目解析

 

分析这个题目不难得出一个容积公式

 

二、算法原理

解法一:暴力枚举(超时)

套用上述的容积公式,使用两个for循环来枚举出所有可能的情况,再挑出最大值即可,但是这种写法会超时,导致不通过。时间复杂度是O(n^2)

class Solution {
public:
    int maxArea(vector<int>& height) {
        int n = height.size();
        int ret = 0;    
        for (int i = 0; i < n; i++) 
        {
            for (int j = i + 1; j < n; j++) 
            {
                ret = max(ret, min(height[i], height[j]) * (j - i));
            }
        }
        return ret;
    }
};

可以自己去尝试一下。 

解法二:双指针 

设两个指针left,right分别为这个容器的左边界和右边界,根据容积公式可得

v = min( height[right], height[left]) * (right - left)

从题目中的测试用例中选取一段进行分析如下:

所以我们可以得出结论用较小的数向内枚举的话容积肯定是在减小的,所以较小的数我们就可以不用向后枚举了直接跳过,用较大的数向后枚举就行。 

最后选出容积最大值就行了。 时间复杂度是O(n)。

三、代码编写

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

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

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

相关文章

React使用富文本CKEditor 5,上传图片并可设置大小

上传图片 基础使用&#xff08;标题、粗体、斜体、超链接、缩进段落、有序无序、上传图片&#xff09; 官网查看&#xff1a;https://ckeditor.com/docs/ckeditor5/latest/installation/integrations/react.html 安装依赖 npm install --save ckeditor/ckeditor5-react cked…

【C++类和对象:解锁面向对象编程的奇妙世界】

【本节目标】 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求…

Nginx搭载负载均衡及前端项目部署

目录 ​编辑 一.Nginx安装 1.安装所需依赖 2.下载并解压Nginx安装包 3.安装nginx 4.启动Nginx服务 二.Tomcat负载均衡 1.准备环境 1.1 准备两个Tomcat 1.2 修改端口号 1.3 配置Nginx服务器集群 2.效果展示 ​编辑三.前端项目打包 ​编辑四.前端项目部署 1.上传项目…

你还不会下载网页上的视频嘛???(超级简单!!)

小伙伴们大家好&#xff0c;废话不多说&#xff0c;直接上干货&#xff1a; F12进入开发者页面 然后F5刷新一下 右键&#xff0c;在新的页面打开 就会看到一个单独的视频网页&#xff0c;右键另存为就好啦

Redis入门02-基础概念

目录 常用的简单操作命令 Redis字符串中的SDS Redis事务 Key的过期时间 Redis实现缓存简单示例 常用的简单操作命令 Redis提供了多种数据类型&#xff0c;包括字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09…

Spring系列之基础

目录 Spring概述 Spring的优点 Spring Framework的组成 总结 Spring概述 Spring 是目前主流的 Java Web 开发框架&#xff0c;是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架&#xff0c;具有很高的凝聚力和吸引力。它以Ioc&#xff08;控制反转&#xff09;和…

GAMP源码阅读:RINEX文件读取

原始 Markdown文档、Visio流程图、XMind思维导图见&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 1、readobsnav()&#xff1a;Rinex 文件读取主入口函数2、readrnxfile()&#xff1a;传入文件路径&#xff0c;读取起止时间内数据4、readrnxfp()…

“原生感”暴涨311%,这届年轻人不再爱浓妆?丨小红书数据分析

近年来&#xff0c;越来越多美妆博主在社交媒体平台安利“原生感妆容”&#xff0c;即我们所熟知的“伪素颜妆”、“裸妆”、“白开水妆”&#xff0c;显然&#xff0c;追求“原生感”成为当代妆容主流。通过小红书数据分析工具&#xff0c;查看#原生感妆容 话题&#xff0c;近…

一位69岁美国老程序员的自述:使用Delphi开发了一款软件仅仅销售了半年赚够钱就退休了

我不确定谁会感兴趣&#xff0c;但你是点击按钮的那个人......所以我就说了。 我是一名 69 岁&#xff08;截至 2008 年&#xff09;的退休程序员&#xff08;译者注&#xff1a;Delphi社区的一位网友说本文主人公已经在前几年去世&#xff0c;但是主人公的网站依然还能访问Del…

Mojo::UserAgent模块做的一个快速爬虫项目

use Mojo::UserAgent;my $ua Mojo::UserAgent->new; my $proxy duoip:8000;# 使用爬虫IP $ua->proxy(http, $proxy) # 设置http爬虫IP->proxy(https, $proxy); # 设置https爬虫IPmy $res $ua->get(音乐网址); if ($res->is_success) {print $res->body; …

让企业的数据用起来,数据中台=数据治理?

加gzh“大数据食铁兽”&#xff0c;了解更多数据治理信息。 先说结论&#xff1a;数据中台是数据管理/治理的工具之一&#xff0c;数据治理是3分技术7分管理及运营。 数据中台的定义&#xff1a; 狭义的数据中台指在企业内部通过对数据半成品、算法、模型、工具等能力的积累&a…

apk反编译修改教程系列---简单去除apk联网权限 其他权限 无法自动更新等【四】

往期教程&#xff1a; apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 目前基本所有的apk都有联网设…

蚂蚁蚁盾发布实体产业「知识交互建模引擎」,最快10分钟定制AI风控模型

数字化起步晚、数据分散稀疏、专业壁垒高、行业知识依赖「老师傅」&#xff0c;是很多传统产业智能化发展面临的难题。2023年云栖大会上&#xff0c;蚂蚁集团安全科技品牌蚁盾发布“知识交互建模引擎”&#xff0c;将实体产业知识与AI模型有机结合&#xff0c;助力企业最快10分…

【C++】类的默认成员函数----const成员函数(超详细解析)

目录 一、前言 二、const成员函数 &#x1f34e;const修饰类的成员函数 &#x1f4a6;问题1 &#x1f4a6;问题2 &#x1f4a6;针对const成员函数的常考面试题&#xff08;重点&#xff01;&#xff01;&#xff09; &#x1f350;取地址及const取地址操作符重载 三…

可靠的互联网兼职平台,平常可以做副业充实生活

在互联网时代&#xff0c;越来越多的人开始通过网络来寻找兼职副业的机会&#xff0c;能够更灵活地安排自己的时间&#xff0c;实现自己的收入增值。那么找到一个正规可靠的线上兼职平台就是一个比较重要的事情&#xff0c;这里分享几个正规靠谱的线上兼职副业平台&#xff0c;…

生物信息学 | 借助 AI 更高效地开启研究

生物信息学 (Bioinformatics) 是指利用应用数学、信息学、统计学和计算机科学的方法&#xff0c;研究生物学问题。 随着计算机科学技术的发展&#xff0c;AI 在解决复杂又颇具挑战的生物学研究问题方面&#xff0c;显露出极大的优势&#xff0c;进一步加速了传统研究范式的转变…

京东h5st逆向 h5st代码之拓展

知识点 node安装模块 crypto-js JavaScript 中的加密库 则更偏向于消息摘要算法、对称加密和简单的哈希函数&#xff0c;支持 AES、DES、SHA-1、HMAC 等诸多算法&#xff0c;适用于对客户端本地存储的数据进行加密、散列或签名处理等场景 axios 一旦安装成功&#xff0c;我们就…

uniapp原生插件之视频图片选择安卓原生插件

插件介绍 本地相册图片和视频多选Android扩展原生插件 插件地址 视频图片选择安卓原生插件 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 插件申请权限 存储卡读写权限 manifest.json权限列表 /* android打包配置 */"android" : {"permission…

python和java区别

1.java需要javac编译为.class文件&#xff0c;用java运行&#xff0c;定义的类需要与文件名相同&#xff1b;python能直接运行&#xff1b;不过&#xff0c;现在java的jdk中能直接使用java直接运行.java文件了&#xff01; 2. java声明变量数据类型&#xff0c;使用int a 8&am…

k8s调度约束

List-Watch Kubernetes 是通过 List-Watch的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 List-Watch机制 工作机制&#xff1a;用户通过 kubectl请求给 APIServer 来建立一个 Pod。APIServer会将Pod相关元信息存入 etcd 中…