LeetCode----Palindrome Linked List
来源:互联网 发布:中科大软件学院排名 编辑:程序博客网 时间:2024/06/04 18:52
Palindrome Linked List
Given a singly linked list, determine if it is a palindrome.
Follow up:
Could you do it in O(n) time and O(1) space?
在O(n)时间,O(1)空间内判断一个字符链表是否是回文的。因为需要O(1)空间,所以不能借助栈。
我的思路是:先得到整个链表的长度L,然后将链表分解成前L/2,和后L/2的链表,将后L/2的链表反转,然后比较这两个串。
Discuss中发现了更好的思路,可以用双指针遍历链表,其中一个指针遍历速度是另一个的两倍,这样避免了计算链表长度,同时也减少了运行时间。
代码:
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def isPalindrome(self, head): """ :type head: ListNode :rtype: bool """ l = self.getListLen(head) if l <= 1: return True index, mid = 0, l / 2 p, pre, ppre = head, None, None while p: index += 1 if index == mid + 1: ppre = pre ppre.next = None mid = p break pre = p p = p.next mid = self.reverseList(mid) # compare p1 = head p2 = mid while p1 and p2: if p1.val != p2.val: return False p1 = p1.next p2 = p2.next return True def getListLen(self, head): p = head l = 0 while p: l += 1 p = p.next return l def reverseList(self, head): pre, cur = None, head while cur: cur.next, pre, cur = pre, cur, cur.next return pre
0 0
- LeetCode Palindrome Linked List
- LeetCode - Palindrome Linked List
- leetcode: Palindrome Linked List
- Leetcode: Palindrome Linked List
- leetcode:Palindrome Linked List
- [LeetCode] Palindrome Linked List
- LeetCode || Palindrome Linked List
- 【leetcode】Palindrome Linked List
- LeetCode-Palindrome Linked List
- Leetcode|Palindrome Linked List
- [leetcode] Palindrome Linked List
- [LeetCode]Palindrome Linked List
- [Leetcode]Palindrome Linked List
- [leetcode] Palindrome Linked List
- [leetCode] Palindrome Linked List
- LeetCode----Palindrome Linked List
- LeetCode:Palindrome Linked List
- LeetCode Palindrome Linked List
- 打堆栈的方式
- Android动画之translate(位移动画)
- hdu2222
- 大型Web应用的数据库设计与部署
- chrome extension 如何保存图片到本地
- LeetCode----Palindrome Linked List
- Jfire-Orm迎来第一个功能更新
- 病毒侵袭(ac自动机模板)
- IOS 纯代码实现视图控制器的封装
- android json解析(fastjson,Gson等)
- atom
- 获取安装游戏应用设备信息(swift)
- 控制文本框只输入正负浮点数
- Android使用Bmob移动后端云Restful API需要注意的问题