是一个常见的问题,可以通过遍历链表并将节点值存储在一个数组中,然后判断数组是否为回文序列来解决。
具体步骤如下:
以下是一个示例的实现代码:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def isPalindrome(head):
if not head or not head.next:
return True
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
prev = None
while slow:
next_node = slow.next
slow.next = prev
prev = slow
slow = next_node
while prev:
if head.val != prev.val:
return False
head = head.next
prev = prev.next
return True
这个算法的时间复杂度为O(n),其中n是链表的长度。空间复杂度为O(1)。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云