原題
翻轉(zhuǎn)鏈表中第m個節(jié)點(diǎn)到第n個節(jié)點(diǎn)的部分
注意事項(xiàng)
m,n滿足1 ≤ m ≤ n ≤ 鏈表長度
樣例
給出鏈表1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null
解題思路
- 同Reverse Linked List相似,首先找到四個關(guān)鍵的preM, M, N, postN
完整代碼
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
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
prevmNode, nNode = dummy, dummy
for i in range(m - 1):
prevmNode = prevmNode.next
for i in range(n):
nNode = nNode.next
mNode = prevmNode.next
postnNode = nNode.next
prev = postnNode
for _ in range(n - m + 1):
temp = mNode.next
mNode.next = prev
prev = mNode
mNode = temp
prevmNode.next = nNode
return dummy.next