美文网首页
2019-05-19LeetCode234. 回文链表

2019-05-19LeetCode234. 回文链表

作者: mztkenan | 来源:发表于2019-05-19 22:02 被阅读0次

使用快慢指针找到中间位置,再进行链表翻转,其实奇数的时候最后两个数组比较,有点巧妙 20min

class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        slow,fast=head,head
        while(fast!=None and fast.next!=None): #偶数fast=None,slow=mid+1,奇数fast=end,slow=mid
            slow=slow.next
            fast=fast.next.next
        
        new=self.reverseList(slow)
        while(new!=None):  #如果偶数,两边相等,奇数,最后一个都是head
            if head.val!=new.val:return False
            head=head.next
            new=new.next
        return True
            
        
        
    def reverseList(self, head: ListNode) -> ListNode:
        if head==None or head.next==None:return head
        end=head.next
        h=self.reverseList(head.next)
        end.next=head
        head.next=None
        return h  

另外两种考虑
1.前部分的最后指针指向None,右部分最后一个不比较
2.如果奇数,把slow=slow.next,总之使用短的不为空

相关文章

  • 2019-05-19LeetCode234. 回文链表

    使用快慢指针找到中间位置,再进行链表翻转,其实奇数的时候最后两个数组比较,有点巧妙 20min 另外两种考虑1.前...

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

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

  • 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 就是一个回文链表。 分析 链表由于其特殊的结构...

网友评论

      本文标题:2019-05-19LeetCode234. 回文链表

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