先简单了解下:
单链表:
快慢指针:
slow:正常的指针,每次走一步
fast:每次走两步
回文问题:
noon、奥利奥、1221等等这种就是回文
如何用快慢指针解决单链表的回文问题呢?
看到noon 、 奥利奥这样的字眼,我们可以想
以noon为例,我们可以从no on 中间开始,一边往左,一边右,同时去判断,直到结束(遇到null了)
那么怎么找到这个中间位置呢?——快慢指针
为什么快慢指针能找到中间位置呢?——如果走n步的话,s(slow)走了n步,f(fast)走了2n步
这时候如果链表长度刚好为2n,那么s就在中间位置了呀
(这里先埋下个伏笔,链表的长度都一定是2的倍数(偶数)吗,通常遇到2n我们都要去考虑下奇偶数的问题)
那如果要使指针能够往左边走的话,我们是不是需要在原先的链表上逆序?ÿ