快慢指针(java)


前言

快慢指针是链表的一个重要的方法,在面试中常常用来使空间复杂度变小。但是又有很多中情况需要讨论,所以我们所需要做的是不断的练习,否则一旦在面试中卡住就是几个小时,很不爽


一、快慢指针是什么?

就是用两个指针遍历数组,一个指针一次走两步叫快指针,一个指针一次走一步,叫做慢指针。这样在快指针到尾部的时候,慢指针就到了中点。这样就可以找到 链表的中点。

二、多种情况

奇数

当链表的节点个数为奇数的时候,两个指针会怎么样

一起走

假设是一同走的,那么到最后
快指针会到链表的最后一个节点
慢指针会到中点

慢指针快一步

快指针还是走到链表的最后一个节点
慢指针会走到中点的后面一个

快指针快一步(无意义)

快指针会走出链表。最后一个节点的后面变空
慢指针会走到中点

快指针快两步

快指针会走到最后一个节点
慢指针会中点的前面一个指针

偶数

偶数的情况

一起走

快指针到链表的最后一个节点的后面,为空
慢指针会到两个中点的后面一个

慢指针快一步

快指针到链表的最后一个节点的后面,为空
慢指针到两个中点的后面一个节点

快指针快一步

快指针到最后一个节点
慢指针到两个中点的前面

快指针快两步

当只有两个节点的时候会出错
如果不是,快指针会到链表的最后一个节点的后面,为空
慢指针会到两个中点的前面一个

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉卧考场君莫笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值