小黑腰酸背痛继续leetcode:剑指 Offer II 027. 回文链表

发布于:2023-01-05 ⋅ 阅读:(293) ⋅ 点赞:(0)

小黑做法

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        arr = []
        while head:
            arr.append(head.val)
            head = head.next
        if arr[::-1] == arr:
            return True
        else:
            return False

在这里插入图片描述

递归法

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        self.pre_node = head
        def res_check(node = head):
            if node:
                if not res_check(node.next):
                    return False
                if self.pre_node.val != node.val:
                    return False
                self.pre_node = self.pre_node.next
            return True
        return res_check()   

在这里插入图片描述

快慢指针法

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        def reserve(head):
            previous = None
            current = head
            while current:
                next_node = current.next
                current.next = previous
                previous = current
                current = next_node
            return previous
        # 初始化快慢结点
        slow = fast = head
        while fast and fast.next and fast.next.next:
            fast = fast.next.next
            slow = slow.next
        # slow到中点,翻转后面
        after_reverse = reserve(slow.next)
        # 判断两段是否相等
        after_head = after_reverse
        pre_head = head
        while after_head and pre_head:
            if after_head.val != pre_head.val:
                return False
            after_head = after_head.next
            pre_head = pre_head.next
        return True

在这里插入图片描述

小黑生活

在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到