码迷,mamicode.com
首页 > 其他好文 > 详细

回文链表

时间:2021-04-09 13:34:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:剑指offer   题解   one   imp   isp   移动   val   detail   href   

234. 回文链表

题目描述:

? 请判断一个链表是否为回文链表。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

import copy
class Solution:
    def isPalindrome(self, head) -> bool:
        if head is None:
            return True
        # 反转链表
        last = None   #指向上一个节点
#        Head = head
        Head=copy.deepcopy(head)
        while head:
            #先用tmp保存head的下一个节点的信息,
            #保证单链表不会因为失去head节点的next而就此断裂
            tmp = head.next   
            #保存完next,就可以让head的next指向last了
            head.next = last
            #让last,head依次向后移动一个节点,继续下一次的指针反转
            last = head
            head = tmp
        
        while Head is not None:
            if Head.val != last.val:
                return False
            Head = Head.next
            last = last.next
        return True 

自己的想法:

  1. 使用反转链表进行获得反向的链表

  2. 进行和初始链表进行值的比较,不同则不是回文链表

为什么error:

  1. 链表直接赋“=”,之后初始链表变化,复制的链表也会变化

解题思路:

Python剑指offer之反转链表-图解

Python--链表的深复制,浅复制

感想:

被所有人打败,太慢了,得优化优化,再优化。看看大佬的解题思路。

整个流程可以分为以下五个步骤:

  1. 找到前半部分链表的尾节点。
  2. 反转后半部分链表。
  3. 判断是否回文。
  4. 恢复链表。
  5. 返回结果。

至少比我快很多。

官方题解

回文链表

标签:剑指offer   题解   one   imp   isp   移动   val   detail   href   

原文地址:https://www.cnblogs.com/fanyaochi/p/14635986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!