题目描述
Given a singly linked list, determine if it is a palindrome.
Example 1:
1 | Input: 1->2 |
Example 2:
1 | Input: 1->2->2->1 |
Follow up:
Could you do it in O(n) time and O(1) space?
中文题目
请判断一个链表是否为回文链表。
示例 1:
1 | 输入: 1->2 |
示例 2:
1 | 输入: 1->2->2->1 |
进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
解决方法
方法一
- 描述
- 使用快慢指针,快指针每次前进两步,慢指针每次前进一步,慢指针走的过程中,同时修改next指针,使得前半部分逆序。会形成一个指向前半部分逆序的指针prev和一个指向后半部分的指针slow
- 每次同时移动prev和slow一个指针,如有某个节点不相等,则非回文,反之回文
- 源码
1 | /** |