题目链接:
https://www.lintcode.com/problem/palindrome-linked-list/description
设计一种方式检查一个链表是否为回文链表。
Example
样例 1:
输入: 1->2->1
输出: true
样例 2:
输入: 2->2->1
输出: false
Challenge
O(n)的时间和O(1)的额外空间。
思路1:先将链表翻转保存下来,然后将翻转后的链表和原链表循环比较
思路2:用快慢指针来寻找链表的中点,每次慢指针走一步,都把值存入栈中,等到达中点时,链表的前半段都存入栈中了,由于栈的后进先出的性质,就可以和后半段链表按照回文对应的顺序比较了。
思路3:用快慢指针来寻找链表的中点,找到中点后,将后半段的链表翻转一下。