github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/algorithm/leetcode/palindrome_linked_list_test.go (about) 1 package leetcode 2 3 // 234. 回文链表 https://leetcode-cn.com/problems/palindrome-linked-list/ 4 func isPalindrome(head *ListNode) bool { 5 if head == nil || head.Next == nil { 6 return true 7 } 8 9 slow := head // 快指针每轮多走1步 10 fast := head // 慢指针 11 var pre *ListNode = nil 12 var temp *ListNode = nil 13 14 for fast != nil && fast.Next != nil { 15 fast = fast.Next.Next 16 // 反转 17 temp = slow.Next 18 slow.Next = pre 19 pre = slow 20 slow = temp 21 } 22 if fast != nil { 23 slow = slow.Next 24 } 25 26 for slow != nil { 27 if slow.Val != pre.Val { 28 return false 29 } 30 slow = slow.Next 31 pre = pre.Next 32 } 33 34 return true 35 }