博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
234 Palindrome Linked List
阅读量:4513 次
发布时间:2019-06-08

本文共 1038 字,大约阅读时间需要 3 分钟。

这道题如果不要求space O(1) 代码写起来就相当简单。 但是要求 O(1),唯一的方法就是reverse 前半部分linked List 在做比较, 稍微注意长度为奇偶时一点小小的区别。写起来还是很费劲的

class Solution:    # @param {ListNode} head    # @return {boolean}    def isPalindrome(self, head):        dummy = ListNode(0)        dummy.next = head        p1, p2, length = dummy, dummy,0        while p2.next != None:            p1 = p1.next            p2 = p2.next            length += 1            if p2.next == None:                break            p2 = p2.next            length += 1        p2 = p1.next        p1 = self.reverse(head, p1)        if length % 2 == 1:            p1 = p1.next        while p2 != None:            if p1.val != p2.val:                return False            p1, p2 = p1.next, p2.next        return True    def reverse(self, head, p1):        if head == p1:            return head        if head == None:            return        net = head.next        head.next = None        rest = self.reverse(net,p1)        net.next = head        return rest

 

转载于:https://www.cnblogs.com/dapanshe/p/4653415.html

你可能感兴趣的文章
第5次作业_078_刘玲志
查看>>
ZOJ 1184
查看>>
spring - aop 使用方式总结
查看>>
最后,我想对你说一句:我爱你
查看>>
使用jndi连接数据库
查看>>
Python---- 函数
查看>>
javascript中的函数作用域和声明提前
查看>>
Xcode10升级项目报错library not found for -lstdc++.6.0.9
查看>>
ZOJ-1129-Erdos Numbers
查看>>
java学习第四天 类和变量
查看>>
IDEA中如何添加RunDashboard
查看>>
单例静态继承
查看>>
Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.2——设置Flavors和Variants...
查看>>
Android零基础入门第36节:Android系统事件的响应
查看>>
POJ 2262 Goldbach's Conjecture
查看>>
自己手动写代码实现数据库连接池
查看>>
领域对象驱动开发:来吧,让我们从对象开始吧
查看>>
mysql分区分表讲解
查看>>
java编程思想读书笔记三(11-21)
查看>>
luogu P5302 [GXOI/GZOI2019]特技飞行
查看>>