Leetcode234解答
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func isPalindrome(head *ListNode) bool { if head == nil || head.Next == nil { return true } // 找到链表的中点 slow, fast := head, head for fast.Next != nil && fast.Next.Next != nil { slow = slow.Next fast = fast.Next.Next } // 反转后半部分链表 secondHalf := reverseList(slow.Next) // 比较前半部分和反转后的后半部分链表 p1, p2 := head, secondHalf for p2 != nil { if p1.Val != p2.Val { return false } p1 = p1.Next p2 = p2.Next } // 恢复链表 slow.Next = reverseList(secondHalf) return true } // 反转链表 func reverseList(head *ListNode)……