题目来源:
leetcode题目,网址:
解题思路:
使用快慢指针遍历链表的同时记录快指针移动次数的奇偶性及反转慢指针指向节点之前的所有节点。然后根据针移动次数的奇偶性得出链表长度的奇偶性并以此得到中间节点的位置,最后遍历两链表(slow 指针及其之前的节点构成的反转链表的子链表,slow指针之后节点构成的链表)判断是否相等即可。
解题代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head