双指针

最近做题遇到很多问题,绞尽脑汁才做出来,但是一搜发现有很多题目使用双指针是非常简单的。于是下定决心,看看双指针是个什么鬼。

网上的说法很通俗易懂,就是两个指针,一个指针走的快,叫快指针,一个指针走的慢,叫慢指针。那么一个快,一个慢,有什么用呢?

我自己思考了下,这种思路用在去除满足条件的元素中非常有用,比如leetcode中的去除相同元素。

(1)快指针在前面扫描有没有符合的元素,若没有,则慢指针(统计不符合条件个数)加一,并将当前快指针的元素赋给慢指针(因为慢指针的元素已经扫描过了,改变不影响快指针的扫描)。否则,什么都不做。最后只需要返回慢指针扫描过的地方就好了。

(2)相比于新建一个数组,将扫描过后不符合条件的元素转移到新建数组,然后再将新建数组赋给元素组,这种方法的优势在于一个在扫描,另一个可以直接完成新建数组,赋给原数组的工作,只是原数组的大小没有改变,需要慢指针记录符合条件的个数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值