【面试经典150 | 双指针】盛最多水的容器

news2024/11/22 15:22:25

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:双指针
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【双指针】【数组】


题目来源

面试经典 150 | 11. 盛最多水的容器


题目解读

给你一个表示轴高度的数组 heightheight[i] 表示位置 i 处轴的高度为 height[i],请你找出利用数组中的任意两根轴与水平轴组成的容器盛水的最大量(面积表示)。


解题思路

方法一:双指针

我们使用双指针表示容器两个竖直方向的轴,初始化双指针分别指向数组的首末位置,表示容器初始的边界所在的范围。接下来双指针如何移动呢?每次移动指向较小的边界高度的指针,为什么呢?

  • 首先,需要明确 容器盛水面积 = 较小的边界高度 × \times × 两指针间距
  • 如果移动指向较小的边界高度的指针,边界高度可能变大;
  • 如果移动指向较大的边界高度的指针,元素最好情况下维持不变,间距变小(只要移动指针,容器间距即底边长度一定变小),面积一定减小。

于是,每次移动的是指向较小的边界高度的指针。

最终的答案是以每次的双指针作为边界计算出的容器面积的最大值。

实现代码

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

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为数组 height 的长度。每次只会移动一个指针,指针最多遍历整个数组一次。

空间复杂度: O ( 1 ) O(1) O(1),使用额外的空间的只有两个指针。

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

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

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

相关文章

通过内网穿透实现文件共享,Python—行代码轻松实现公网访问

文章目录 1.前言2.本地文件服务器搭建2.1.python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有广泛的应用&#…

睿趣科技:抖音开店的操作流程有哪些

随着社交媒体的兴起&#xff0c;抖音已经成为了一款备受欢迎的短视频分享平台。许多人看到了在抖音上开店的商机&#xff0c;因此抖音开店也逐渐成为了一种新兴的商业模式。那么&#xff0c;抖音开店的操作流程究竟有哪些呢?下面将为您详细介绍。 第一步&#xff1a;选定产品和…

深入解析select、poll、epoll:Linux网络编程的三种IO模型

文章目录 IO模型的分类多路复用型IO的分类selectselect系统调用缺点 pollpoll系统调用缺点 epollepoll系统调用epoll模型优点LT模式与ET模式 IO模型的分类 大家都知道&#xff0c;一个完整的IO操作所花费的时间在计算机中是非常多的&#xff08;速度非常慢&#xff09;&#x…

Python定义一个接收3个列表的函数

class CustomFunction:def __getitem__(self, slices):slice1, slice2, slice3 slices# 在这里执行你的操作print("第一个切片&#xff1a;", slice1)print("第二个切片&#xff1a;", slice2)print("第三个切片&#xff1a;", slice3)# 创建一…

黄金代理是什么?和黄金平台有什么不同?

有现货黄金投资需求的朋友都知道&#xff0c;最近我们在网上能看到越来越多的黄金代理进行活动。这个现货黄金代理跟现货黄金投资&#xff0c;又有什么关系呢&#xff1f;投资者如何处理黄金代理与黄金投资以及黄金平台之间的关系呢&#xff1f; 黄金代理在现货黄金市场中类似证…

分享一个基于微信小程序的高校大学生心理咨询与测试小程序(源码lw调试)java+Python双版本

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

使用Cpolar 内网穿透工具,实现公网访问SeaFile搭建的私有云盘

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

情侣飞行棋 情侣小游戏 2023 抖音

飞行棋网站地址:https://effect.guoyaxue.top/fxq/index.html#/ 以及各种新版来袭&#xff1a; 以及各种情侣小游戏合集 https://fxnew.guoyaxue.top/#/

一文了解语音合成技术(TTS)

TTS是Text To Speech的缩写&#xff0c;即“从文本到语音”。 它将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语口语&#xff08;或者其他语言语音&#xff09;输出的技术&#xff0c;隶属于语音合成&#xff08;SpeechSynthesis&#xff09;。 语音…

【前端实习生备战秋招】—计算机网络面试题汇总,建议收藏系列

【前端实习生备战秋招】—计算机网络面试题汇总&#xff0c;建议收藏系列 一、HTTP协议 1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法&#xff0c;其区别如下&#xff1a; 应用场景&#xff1a;GET 请求是一个幂等的请求&#xff0c;一般 Get 请求用于对服…

Linux软件包管理:yum和apt比较

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

elasticsearch16-聚合API

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

多媒体隧道

多媒体隧道使压缩的视频数据能够通过硬件视频解码器直接传送到显示器&#xff0c;而无需通过应用程序代码或 Android 框架代码进行处理。 Android 堆栈下方的设备特定代码通过将视频帧呈现时间戳与以下类型的内部时钟之一进行比较来确定将哪些视频帧发送到显示器以及何时发送它…

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

MySQL 几种导数据的方法与遇到的问题

零、说在前面 MySQL导数据通常使用第三方工具和MySQL自身的工具&#xff0c;本文分别就这两类方法分别介绍。 一、第三方工具之 Navicat 1.1、Navicat的“数据传输”工具 打开Navicat&#xff0c;点击“工具”标签&#xff0c;找到“数据传输”&#xff0c;即可看到操作界面。…

SQL Server 日期范围按每月一行拆分

要将 SQL Server 中的日期范围按每月一行拆分&#xff0c;可以使用一个表值函数&#xff08;Table-Valued Function&#xff09;来生成日期范围内的月份&#xff0c;并将其与其他数据连接&#xff0c;以创建包含每月一行的结果集。 以下是一个示例&#xff0c;说明如何实现这一…

怎么用外网访问自己的网站?快解析内网端口映射来实现

想要访问服务器上的网站需要直接或间接访问服务器IP地址&#xff0c;但是如果服务器没有公网IP地址&#xff0c;那么就需要借助外网进行访问。当我们需要远程访问内网的Web服务器时&#xff0c;我们需要使用一些技术来实现此目的。这就需要通过使用类似快解析内网端口映射方式进…

使用HTTP爬虫ip中的常见误区与解决方法

在使用HTTP爬虫进行网页抓取时&#xff0c;涉及到IP地址的处理&#xff0c;可能会存在一些常见的误区。以下是一些常见误区及解决方法&#xff1a; 1.使用个人IP进行大规模爬取&#xff1a;如果你使用个人住宅IP进行大规模爬取&#xff0c;可能会被目标网站视为恶意攻击&#x…

解决Pycharm使用Conda激活环境失败的问题

Q:公司电脑终端使用powershell来激活conda环境时报错? 同时手动打开powershell报"profile.ps1” 无法被加载的错误 A: 1,手动打开powershell&#xff0c;设置管理员打开 2,打开powershell 打开 PowerShell 终端&#xff0c;并输入以下命令&#xff1a;Get-ExecutionPo…

Spring AOP以及统一处理

一.Spring AOP 1.什么是Spring AOP AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;面向切面编程&#xff0c;它是一种思想&#xff0c;它是对某一类事情的集中处理。 2.AOP的作用 想象一个场景&#xff0c;我们在做后台系统时&#xff0c;除了登录…