美文网首页
回文链表

回文链表

作者: HellyCla | 来源:发表于2023-04-22 22:06 被阅读0次
image.png

先把值存入链表,再使用双指针判断是否回文。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        val = []
        while head:
            val.append(head.val)
            head=head.next
        lp = 0
        rp = len(val)-1
        while lp<rp: 
            if not val[lp]==val[rp]:
                return False
            lp+=1
            rp-=1
        return True
image.png
  • 进阶解法:一次遍历找到链表后半段(快慢指针),翻转后半段(翻转链表),然后判断反转后的链表与原链表的值是否相等。
class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        # 反转后半段的链表,再比较
        # 快慢指针一趟可以找到中点
        if not head:
            return True
        def find_sec_head(head):
            sp=head
            fp=head
            while fp and fp.next:
                sp=sp.next
                fp=fp.next.next
            return sp

        def reverse(head):
            pre=None
            cur=head
            nxt = head.next
            while cur:
                nxt=cur.next
                cur.next=pre
                pre=cur
                cur=nxt
            return pre

        sec_head = find_sec_head(head)
        reverse_head = reverse(sec_head)
        
        while reverse_head:
            if head.val!=reverse_head.val:
                return False
            head=head.next
            reverse_head=reverse_head.next
        return True
image.png

相关文章

  • 【日拱一卒】链表——回文判断

    需求 判断一个链表是否是回文链表 回文的形式大家应该都知道,类似 这种对称的方式都是回文。 难点 如果将链表形式换...

  • LeetCode 234. 回文链表

    234. 回文链表 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2输出: false 示例 2: 输...

  • 漫谈递归-回文链表

    题目 234. 回文链表请判断一个链表是否为回文链表。 测试 示例 1:输入: 1->2输出: false 示例 ...

  • 02-14:leetcode重刷8之哈希与数组

    链表: 判断链表是否环形、是否回文 1、是否链表 #Definitionforsingly-linkedlist....

  • 2019-02-19 Day 45 待提高

    1.回文链表请判断一个链表是否为回文链表。 示例 1: 输入: 1->2输出: false示例 2: 输入: 1-...

  • LeetCodeDay13 —— 回文链表&环形链表

    234. 回文链表 描述 请检查一个链表是否为回文链表。 进阶 你能在 O(n) 的时间和 O(1) 的额外空间中...

  • Swift 回文链表 - LeetCode

    题目: 回文链表 请判断一个链表是否为回文链表。 示例1: 示例2: 进阶你能否用 O(n) 时间复杂度和 O(...

  • Swift - LeetCode - 回文链表

    题目 回文链表 问题: 请判断一个链表是否为回文链表。 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复...

  • LintCode 回文链表

    题目 设计一种方式检查一个链表是否为回文链表。 样例1->2->1 就是一个回文链表。 分析 链表由于其特殊的结构...

  • 链表——回文链表

    这个题属实不算难,但是因为出在链表部分,很容易让人误会是使用链表的特性来解题,但是实际上还是使用普通的回文串判别的...

网友评论

      本文标题:回文链表

      本文链接:https://www.haomeiwen.com/subject/udbsjdtx.html