一、双指针

双指针是一种在编程中解决数组或链表问题的有效方法,常见类型有左右指针和快慢指针。左右指针常用于有序数组,从两端向中间移动处理元素,如字符串反转;快慢指针则通过不同速度的指针判断条件,如移除元素,当快指针找到特定值时,慢指针将值替换并前进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双指针指用两个不同速度或不同方向的指针对数组或对象进行访问,通过两个不同指针的碰撞从而达到特定的目的。

在时间或空间条件有限的情况下使用单向遍历需要消耗大量的时间或者根本无法解决问题,这时候就需要我们使用双指针,通过指针的碰撞判断是否达到条件,从而解决问题。

一、左右指针

左右指针通常用在有序数组中,通过从数组两端向中间移动,对满足特定条件的成对元素进行处理。

例如,下面这道反转字符串的题

力扣https://leetcode.cn/problems/reverse-string/

通过从数组的两端开始,将两端的元素依次交换,直到两指针相等,这样,字符串的反转就完成了。

二、快慢指针 

快慢指针指通过两个移动速度不同的指针对元素进行处理。

例如,下面这道移除元素的题

力扣icon-default.png?t=N2N8https://leetcode.cn/problems/remove-element/description/ 可以定义两个指针,移动速度快的指针用来判断元素的值是否等于val,移动速度慢的指针用来将它前面的元素变为不等于val的元素。

当移动速度快的指针的值不等于val时,移动速度快的指针的值赋给移动速度慢的指针,该指针++。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值