题目
解法思路
有两种实现方法,
一种直接在原列表上进行处理:
- 查找到mid中间的node
- 对第二部分同时反转
- 比较第一部分/第二部分
第二种进行处理:
- 将原链表转化为列表
- 比较得到结果
代码
class Solution:
def isPalindrome(self, head):
rev = None
slow = fast = head
while fast and fast.next:
fast = fast.next.next
rev, rev.next, slow = slow, rev, slow.next
if fast:
slow = slow.next
while rev and rev.val == slow.val:
slow = slow.next
rev = rev.next
return not rev
class Solution:
def isPalindrome(self, head: 'ListNode') -> 'bool':
values = []
while head:
values.append(head.val)
head = head.next
return values == values[::-1]