leetcode: Reorder List 的Python实现
来源:互联网 发布:windows更新清理 编辑:程序博客网 时间:2024/06/05 00:33
题目:
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}
, reorder it to {1,4,2,3}
.
1. 将list从中间切成两段,并找到中间的结点 mid(findMid);
2. 对mid做链表翻转,返回翻转后的链表头 head2(reverse);
3. 将head 和 head2 做交叉合成(merge);
class Solution(object): def reorderList(self, head): if not head or not head.next or not head.next.next: #如果只有两个以内的结点,直接返回 return head mid = self.findMid(head) head2 = self.reverse(mid) phead = self.merge(head,head2) return phead def findMid(self,head): slow = head fast = head while fast and fast.next: slow = slow.next fast = fast.next.next mid = slow.next slow.next = None return mid def reverse(self,head): if not head or not head.next: return head p_next = None phead = head while phead: p = phead phead = phead.next p.next = p_next p_next = p return p_next def merge(self,head1,head2): phead = head1 while head2: x = head1.next y = head2.next head1.next = head2 head2.next = x head1 = head1.next.next head2 = y return phead
0 0
- leetcode: Reorder List 的Python实现
- 【leetcode】Reorder List (python)
- [Leetcode][python]Reorder List
- 【LeetCode with Python】 Reorder List
- 【LEETCODE】143- Reorder List [Python]
- [LeetCode]--143. Reorder List(Python + Java)
- LeetCode:Reorder List C++与Java实现
- leetcode reorder-list(java实现)
- [leetcode][list] Reorder List
- [leetcode][list] Reorder List
- Reorder List [leetcode] 的两种思路
- Leetcode: Reorder List
- [LeetCode] Reorder List
- LeetCode题解:Reorder List
- Leetcode: Reorder List
- LeetCode:Reorder List
- leetcode之Reorder List
- Leetcode: Reorder List
- 同余与模算术
- Hibernate与MyBatis的对比
- SpringBoot操作MySQL数据库
- 动态规划——62. Unique Paths[medium]
- 日期问题
- leetcode: Reorder List 的Python实现
- linux下Nginx遇到的问题
- 平衡二叉树,AVL树之图解篇
- linux内核日志及printk结构浅析
- c++ shared_ptr误区之row pointer被多组shared_ptr拥有
- 实验吧 因缺思汀的绕过
- redis基本操作命令
- 第二类斯特林数
- POJ 1152 An Easy Problem! 笔记