LeetCode----Reverse Linked List II
来源:互联网 发布:网络大电影招商案 编辑:程序博客网 时间:2024/06/04 20:15
Reverse Linked List II
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL
, m = 2 and n = 4,
return 1->4->3->2->5->NULL
.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
代码:
# Definition for singly-linked list.class ListNode(object): def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def reverseBetween(self, head, m, n): """ :type head: ListNode :type m: int :type n: int :rtype: ListNode """ if m == n: return head mid = None # 代表中间的串的头部 right = None # 代表尾串的头部 p = head index = 0 if m == 1: while p: index += 1 if index == n: right = p.next p.next = None break p = p.next mid = self.reverseList(head) head = mid p = self.getLastNode(mid) p.next = right else: pre = None ppre = None while p: index += 1 if index == m: ppre = pre ppre.next = None mid = p if index == n: right = p.next p.next = None break pre = p p = p.next mid = self.reverseList(mid) mid_l = self.getLastNode(mid) ppre.next = mid mid_l.next = right return head def getLastNode(self, head): p = head while p.next: p = p.next return p def reverseList(self, head): pre, cur = None, head while cur: cur.next, pre, cur = pre, cur, cur.next return pre
------------------------------------------------------------------------------------------------------------------------------------------
2016-05-01补充:
代码:
class Solution(object): def reverseBetween(self, head, m, n): """ :type head: ListNode :type m: int :type n: int :rtype: ListNode """ if m == n: return head dummy = ListNode(0) dummy.next = head leftpre = dummy for i in range(m - 1): leftpre = leftpre.next pre = leftpre.next # 此时的leftpre记录的为第m个节点 mid = pre.next post = None for i in range(n - m): # 进行第m个节点到第n个节点的链表反转 post = mid.next mid.next = pre pre = mid mid = post leftpre.next.next = mid leftpre.next = pre return dummy.next
0 0
- LeetCode[Linked List]: Reverse Linked List II
- LeetCode: Reverse Linked List II
- LeetCode: Reverse Linked List II
- [LeetCode] Reverse Linked List II
- [Leetcode] Reverse Linked List II
- [LeetCode]Reverse Linked List II
- Leetcode: Reverse Linked List II
- [Leetcode]Reverse Linked List II
- [leetcode]Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode Reverse Linked List II
- [leetcode] Reverse Linked List II
- LeetCode - Reverse Linked List II
- [LeetCode] Reverse Linked List II
- LeetCode | Reverse Linked List II
- 【leetcode】Reverse Linked List II
- Leetcode: Reverse Linked List II
- leetcode Reverse Linked List II
- js中函数参数
- 自定义样式及带数字ProgressBar
- 卷积神经网络代码简单备注
- 黑马程序员-面向对象的三个基本特征之封装
- IOS 大众点评 搜索界面实现
- LeetCode----Reverse Linked List II
- 2.2栈
- Oracle EBS 用户配置文件
- python之re库
- java中用dom4j对xml文件进行操作
- 最大生成树POJ2263Heavy Cargo解题报告
- 警惕 Xcode 木马
- C#中Winform程序调用WebService服务
- iOS的KVO底层实现原理