算法---双指针

双指针

常见的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。

1.对撞指针⼀般用于顺序结构中,也称左右指针

  • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼近。
  • 对撞指针的终⽌条件⼀般是两个指针相遇或者错开也可能在循环内部找到结果直接跳出循环),也就是:
  • left == right (两个指针指向同⼀个位置)
  • left > right (两个指针错开)

在这里插入图片描述

2.快慢指针:又称为龟兔赛跑算法,其基本思想就是使⽤两个移动速度不同的指针在数组或链表等序列结构上移动这种⽅法对于处理环形链表或数组⾮常有⽤。其实不单单是环形链表或者是数组,如果我们要研究的问题出现循环往复的情况时,均可考虑使⽤快慢指针的思想。快慢指针的实现⽅式有很多种,最常⽤的⼀种就是:

  • 在⼀次循环中,每次让慢的指针向后移动⼀位,⽽快的指针往后移动两位,实现⼀快⼀慢。

在这里插入图片描述


在这里插入图片描述


注意

  • 双指针是一种思想,不一定非要定义指针进行解题,一般情况下可以用数组下标代替,有时甚至可以用数组值代替。
  • 找规律,把不符合/符合题目情况的规律找出来,从而找到切入口,提高算法效率。

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

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

相关文章

Python中的泛型编程

目录 1. 前言1.1 函数模板1.2 类模板1.3 Python中的泛型 2. TypeVar2.1 函数模板与类模板2.2 构造函数2.3 约束2.4 协变与逆变 Ref 1. 前言 泛型编程的引入主要是为了解决代码重用的问题。在没有泛型的情况下,如果你想要实现一个功能(比如排序或查找&am…

韦根协议刷卡原理及代码实现

一、韦根协议原理 韦根接口在门禁行业广泛使用,是一个门禁行业的通信标准,通过两条数据线 DATA0(D0)和 DATA1 (D1)发送数据。目前用的最多的是韦根 34 和韦根 26,二者数据格式相同,…

(C语言)字符分类函数

目录 字符分类函数 1. iscntrl 2. isspace 3. isdigit 4. isxdigit 5. islower 6. isupper 7. isalpha 8. isalnum 9. ispunct 10. isgraph 11. isprint 字符分类函数 C语言中有一系列的函数是专门做字符分类的 ,也就是一个字符是属于什么类型的字符的。…

二维码门楼牌管理系统技术服务:构建智慧城市新标准

文章目录 前言一、二维码门楼牌管理系统的诞生背景二、标准地址编码的定义与作用三、二维码门楼牌管理系统的核心技术四、二维码门楼牌管理系统的应用优势五、二维码门楼牌管理系统在智慧城市建设中的作用六、结论与展望 前言 随着城市化的快速发展,传统的门楼牌管…

通过一篇文章带你玩转git和GitHub

Git和Github的基本用法 前言一、Git和Github的基本用法背景下载安装安装 git for windows安装 tortoise gitgit安装过程中的一些选项 tortoise git汉化教程下载tortoise git汉化安装包安装tortoise git汉化安装包 三、使用 Github 创建项目注册账号创建项目下载项目到本地 四、…

GitHub会员充值

GitHub是一个基于Web的代码托管平台,为开发者提供了协作、版本控制和代码管理的工具。它允许个人和团队共同协作开发软件项目,并提供了许多功能,使得代码的管理和维护更加容易 版本控制系统: GitHub使用Git作为其版本控制系统。Gi…

两天学会微服务网关Gateway-Gateway过滤器

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

python界面开发 - messagebox 提示框

文章目录 1. messagebox1.1. 示例 2. Tkinter 开发3. python图形界面开发3.1. Python图形界面开发——Tkinter3.2. Python图形界面开发——PyQt3.3. Python图形界面开发——wxPython3.4. Python图形界面开发—— PyGTK:基于GTK3.5. Python图形界面开发—— Kivy3.6.…

【ElasticSearch】es索引、映射、文档基本操作复杂查询

各位小伙伴们大家好,欢迎来到这个小扎扎的ElasticSearch专栏,本篇博客由B战尚硅谷的ElasticSearch视频总结而来,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 🌆 内容速览 1 es数据格…

金现代产品方案部部长王宁,将出席“ISIG-低代码/零代码技术与应用发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(LowCode低码时代、RPA中国、AIGC开放社区)主办。大会旨在聚合每一位产业成员的力量,深入探索低…

AD1102 小封装的3.7V锂电池转干电池使用的充放电管理芯片 替代传统干电池、镍氢电池

AD1102是一款锂电池充放电管理专用芯片。充电工作时,可以为 3.7V锂电池进行充电,电流最高可配置 1A。放电工作时,采用开关频率1MHz同步降压转换器进行放电,放电电流可以达到 3A。内部集成欠压保护、短路保护、过温保 护功能。 …

算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列

算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列 文章目录 算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列前言一、链表1.单链表2.双链表 二、栈和队列1.普通栈、队列2.单…

LeetCode Python - 42.接雨水

目录 题目答案运行结果 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组…

Maven基础简介

作者简介: zoro-1,目前大二,正在学习Java,数据结构,spring等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 Maven简介 Maven是什么 Maven…

人工智能|机器学习——Canopy聚类算法(密度聚类)

1.简介 Canopy聚类算法是一个将对象分组到类的简单、快速、精确地方法。每个对象用多维特征空间里的一个点来表示。这个算法使用一个快速近似距离度量和两个距离阈值T1 > T2 处理。 Canopy聚类很少单独使用, 一般是作为k-means前不知道要指定k为何值的时候&#…

Java的Writer类详解

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好…

【xv6操作系统】Lec06 Isolation system call entry/exit

6.1 Trap机制 每当 1.程序执行系统调用 2.程序出现了类似page fault、运算时除以0的错误 3.一个设备触发了中断使得当前程序运行需要响应内核设备驱动 都会发生用户空间和内核空间的切换,通常被称为trap。trap机制要尽可能的简单。 Shell可能会执行系统调用&a…

多种方法解决Error: could not open `C:Program FilesJavajre1.8.0_311libamd64jvm.cfg‘

文章目录 1. 复现错误2. 分析错误3. 解决错误4. 补充说明1. 复现错误 今天春节后开工第一天,打开我的IDEA,却报出如下错误: 报错信息是找不到JRE,于是,通过Windows Powershell输入Java -version,如下图所示: 即Error: could not open C:\Program Files\Java\jre1.8.0_31…

外包干了5天,技术退步明显。。。。。

在湖南的一个安静角落,我,一个普通的大专生,开始了我的软件测试之旅。四年的外包生涯,让我在舒适区里逐渐失去了锐气,技术停滞不前,仿佛被时间遗忘。然而,生活的转机总是在不经意间降临。 与女…

7. 镜面网格

E . 镜面网格 E.镜面网格 E.镜面网格 每次测试时限: 2 秒 每次测试时限:2 秒 每次测试时限:2秒 每次测试的内存限制: 256 兆字节 每次测试的内存限制:256 兆字节 每次测试的内存限制:256兆字节 题目描述 给…
最新文章