leetcode234.回文链表
快慢指针走到最后面,紧接着反转链表,最后遍历链表看是否val相等
题目描述
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func isPalindrome(head *ListNode) bool {
dummy:=&ListNode{-1,head}
slow,fast:=head,head
for fast!=nil && fast.Next!=nil{
slow=slow.Next
fast=fast.Next.Next
}
if fast!=nil{
fast=fast.Next
slow=slow.Next
}
l:=dummy.Next
r:=revert(slow)
for r!=nil{
if l.Val!=r.Val{
return false
}
l=l.Next
r=r.Next
}
return true
}
func revert(head *ListNode) *ListNode{
var pre *ListNode
for head!=nil{
next:=head.Next
head.Next=pre
pre=head
head=next
}
return pre
}
Last updated