快慢指针技巧

快慢指针技巧

在说快慢指针之前,我们先说一下双指针

双指针

双指针:使用两个指针来解决问题。

所谓的指针其实就是指数组的下标,或者链表的节点的地址。

我们以数组为例介绍一下。

双指针

有两个指针分别存储着数组的两个下标,这就是双指针。

那快慢指针是什么呢?

快慢指针

快慢指针,就是一个指针走得慢,另一个指针走得快。

如图所示:

快慢指针

这实际上就是快慢指针,一个走得慢,一个走得快。

我们可以看到,fast指针把整个大数组分成了两个区域:

[0,fast-1]代表已处理的区域
[fast,n-1]代表未处理的区域

快慢指针将数组分成两个大区域

同时,已处理区域又被slow指针划分为了两个区域:

[0,slow-1]代表符合某些条件的区域
[slow,fast-1]代表不符合某些条件的区域

已处理区域被划分为两个小区域

处理逻辑

每一轮处理fast指针指向的元素,

如果元素不符合某种条件,fast++,向后移动。

如果元素符合某种条件,可能会和slow指针指向的元素进行某些运算,比如交换;

然后快慢指针同时向后移动;

直到fast指针移出数组,如图:

fast指针移出数组

slow和fast指针,可以称为:循环不变量。因为它们在循环的时候的含义是不会变的。

始终遵守,如下条件:

[0,fast-1]代表已处理的区域
[fast,n-1]代表未处理的区域

[0,slow-1]代表符合某些条件的区域
[slow,fast-1]代表不符合某些条件的区域

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

秋招突击——6/15——复习{(树形DP)树的最长路径,(单调队列优化DP)——最大子序和,无重复最长子串}——新作{四数之和}

文章目录 引言复习树形DP——树的最长路径实现代码答疑 单调队列优化DP——最大子序和个人实现思路参考思路分析实现代码 无重复最长字串思路分析实现代码 新作四数之和实现思路需要注意的问题 参考代码分析思路实现代码 总结 引言 今天好好看看树的最长的路径,自己…

JavaWeb之初识Tomcat

Tomcat 轻量级应用服务器、JSP、Servlet Tomcat目录结构 在IDEA中创建web项目 在这里不使用maven构建项目,这种方式后面会更新 新建一个java项目File -> Project Settings -> Facets -> -> Web -> OK ( 此时src目录下有一个web目录 )Edit ->…

39、基于深度学习的(拼音)字符识别(matlab)

1、原理及流程 深度学习中常用的字符识别方法包括卷积神经网络(CNN)和循环神经网络(RNN)。 数据准备:首先需要准备包含字符的数据集,通常是手写字符、印刷字符或者印刷字体数据集。 数据预处理&#xff1…

ElasticSearch + kibana:类型声明

当我们使用 kibana 创建索引时,如果不申明数据类型,默认字符串赋予 text类型,如下图所示 接下来我们继续创建多条数据如下: 下面我们来检索下: 通过以上两个案例我们发现,使用 match 模糊查询 li-3 明明…

智利企鹅濒临灭绝,回顾曾仕强的2025年预言!实干才是硬道理——早读(逆天打工人爬取热门微信文章解读)

你相信我们5000年凝结的精华易经吗? 引言Python 代码第一篇 洞见 有人晒出高考后家长支出清单,我觉得是时候告诉孩子挣钱的真相了第二篇 视频新闻结尾 引言 昨天有点破了 看小视频不小心看过头了 大概看了有2个小时 才醒悟过来 再接再厉呀! …

vue3中如何使用pinia -- pinia使用教程(一)

vue3中如何使用pinia -- pinia使用教程(一) 安装使用创建 store使用 store访问修改 store 使用组合式 api 创建 store -- setup storepinia 和 hook 的完美结合如何解决上面的问题 使用 hook 管理全局状态和 pinia 有何优缺点?参考小结 pinia…

哈喽GPT-4o——对GPT-4o 文本创作的思考与看法

目录 用法1:创作小说用法2:创作散文用法3:创作诗歌1、古诗2、现代诗 用法4:创作儿童故事用法5:创作剧本 大家好,我是哪吒。 都说ChatGPT4o是目前文本创作的最强大模型,它都可以用于哪些方面的文…

ArcGIS 10.2软件安装包下载及安装教程!

今日资源:ArcGIS 适用系统:WINDOWS 软件介绍: ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成…

VirtualHere 允许通过网络远程使用 USB 设备,就像本地连接一样!

传统上,USB 设备需要直接插入计算机才能使用。有了 VirtualHere,就不再需要这样做,网络本身就变成了传输 USB 信号的电缆(也称为 USB over IP、USB/IP、USB over WiFi、USB over Ethernet、USB 设备服务器)。 此 USB …

Google谈出海:品牌「性价比」转向「心价比」

Google Marketing Live中国站活动现场 越来越多的中国全球化品牌基于对全球消费和海外地区的深刻洞察,不断提升产品研发和迭代能力,在海外消费者心中塑造「中国质造」和「中国智造」的新形象。2023年6月15日,凯度与Google合作发布《2023 凯…

JavaFX GridPane布局

网格布局 GridPane通常用于布局:表单布局 GridPane可以在行,列或单元格级别指定约束。 例如,我们可以设置包含输入文本字段的第二列,以在窗口调整大小时调整大小。 使用Java FX创建表格的时候,这个布局非常方便。 包…

开源低代码平台,JeecgBoot v3.7.0 里程碑版本发布

项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

7大功能特色 让这款信创传输软件受众行业青睐

信创传输软件,顾名思义,也就是能够支持信创环境的文件传输系统,并且需要具备强大的功能,可以满足各种复杂的传输需求。 这种软件可能具有以下特点和功能: 1、兼容性:能够与信创环境中使用的硬件设备、网络…

智慧校园可视化大屏,对教学教务的提升是肉眼可见的

随着信息技术的快速发展,智慧校园已经成为许多学校追求的目标。智慧校园可视化项目是一种通过信息化手段对教学教务进行管理和提升的创新方式。 智慧利用先进的技术手段,将校园各个环节的数据信息进行收集、分析和展示,从而实现对教学教务工…

用Python分析《三国演义》中的人物关系网

用Python分析《三国演义》中的人物关系网 三国演义获取文本文本预处理分词与词频统计引入停用词后进行词频统计构建人物关系网完整代码 三国演义 《三国演义》是中国古代四大名著之一,它以东汉末年到晋朝统一之间的历史为背景,讲述了魏、蜀、吴三国之间…

项目方案:社会视频资源整合接入汇聚系统解决方案(六)

目录 一、概述 1.1 应用背景 1.2 总体目标 1.3 设计原则 1.4 设计依据 1.5 术语解释 二、需求分析 2.1 政策分析 2.2 业务分析 2.3 系统需求 三、系统总体设计 3.1设计思路 3.2总体架构 3.3联网技术要求 四、视频整合及汇聚接入 4.1设计概述 4.2社会视频资源分类…

[每周一更]-(第101期):打印机该如何选

文章目录 打印机分类1. 喷墨打印机 (Inkjet Printers)特点:优点:缺点: 2. 激光打印机 (Laser Printers)特点:优点:缺点: 3. 多功能一体机 (All-in-One Printers)特点:优点:缺点&…

15. 《C语言》——【如何动态内存开辟】

亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优…

【2024最新精简版】SpringCloud面试篇

文章目录 SpringBoot和SpringCloud什么区别 ?你们项目为什么要使用微服务Spring Cloud 5大组件有哪些?👍什么是微服务?微服务的优缺点是什么?你们项目中微服务之间是如何通讯的? 👍服务注册和发现是什么意思?Spring Cloud 如何…

第二证券A股重要变化!今起实施

A股系列重要指数迎来样本股调整! 此前,深交所及其全资子公司深证信息发布公告,将对深证成指、创业板指、深证100(以下统称“深市中心指数”)施行样本股定时调整。此次调整于6月17日(今日)正式施…