/*
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
*/
前置知识: lc0876 链表的中间节点 (用快慢指针找到链表的中间节点)
Lc0234这题的的思路是
1、用快慢指针找到原链表后半部分(找到后半段链表的头指针)。
2、将前半段链表反转。
3、比较反转后的前半段链表和后半段链表。
其中1、2 两步骤可以同时进行。
先看代码
这题有两个需要注意的点
1、奇数长度的链表和偶数长度的链表处理方式不同。
2、反转链表的操作本身。
下面看图解。
奇数长度的链表 slow需要往前走一步
而偶数长度的链表,快慢指针的while循环之后slow指针已经到达了预期的位置
再看反转链表的过程,这是刚接触链表的选手比较难理解的地方
重点在while循环中红框的代码部分
完结。
同步更新到自己的语雀
https://www.yuque.com/dirackeeko/tfpe21/ny24nl7sleaocz5b
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。