题目链接:https://leetcode.cn/problems/palindrome-linked-list/
难度:简单
描述:
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
题解
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def isPalindrome(self, head: ListNode) -> bool:def reverse(head):if head is None or head.next is None:return headpre = Nonecur = headwhile cur:temp = cur.nextcur.next = prepre = curcur = tempreturn predef get_mid(head):slow, fast = head, head.nextwhile fast and fast.next:slow = slow.nextfast = fast.next.nextreturn slowmid_node = get_mid(head)mid_node.next = reverse(mid_node.next)left, right = head, mid_node.nextwhile right:if left.val != right.val:mid_node.next = reverse(mid_node.next)return Falseleft = left.nextright = right.nextmid_node.next = reverse(mid_node.next)return True
