package LeetcodeQuestions
func isPalindrome(head *ListNode) bool {
if head == nil || head.Next == nil {
return true
}
slow := head
fast := head
for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next
}
var newFirstHead *ListNode
for slow != nil {
node := slow.Next
slow.Next = newFirstHead
newFirstHead = slow
slow = node
}
for newFirstHead != nil && head != nil {
if newFirstHead.Val != head.Val {
return false
} else {
newFirstHead = newFirstHead.Next
head = head.Next
}
}
return true
}