刷题难度:Medium
原题连接:
Reverse a linked list from position m to n. Do it in one-pass.
Note: 1 ≤ m ≤ n ≤ length of list.
Example:
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL
答案:
class Solution:
def reverseBetween(self, head, m, n):
"""
:type head: ListNode
:type m: int
:type n: int
:rtype: ListNode
"""
if not head or m == n:
return head
p = dummy = ListNode(None)
dummy.next = head
for i in range(m-1):
p = p.next
tail = p.next
for i in range(n-m):
tmp = p.next
p.next = tail.next
tail.next = tail.next.next
p.next.next = tmp
return dummy.next
参考:
![](https://img.haomeiwen.com/i15753598/890342e1b2053118.png)
网友评论