声明:题目来源:力扣(LeetCode)
链表的回文结构。
题目链接:回文链表
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
思路:先找中间节点,再将中间节点之前的链表逆置,最后从头和中间节点出发判断节点的值是否相等。需要注意的是,若链表节点数为偶数个,例:
1 —> 2 —> 2 —> 1
则需要逆置为:
2 —> 1 —> 2 —> 1
再同时从 “2” 出发,判断节点值是否相等。
若节点数为奇数个,例:
1 —> 2 —> 3 —> 2 —> 1
则需要逆置为:
2 —> 1 —> 3 —> 2 —> 1
正中间的节点我们不管它,同时从 “2” 这个节点的位置出发判断节点值是否相等。
代码写的有点乱,不过参考一下问题不大: