您的位置:首页 > 其它

92. Reverse Linked List II

2015-12-19 19:33 399 查看
class Solution(object):
def reverseBetween(self, head, m, n):
"""
:type head: ListNode
:type m: int
:type n: int
:rtype: ListNode
"""
# 创建一个头,如果从第一个翻转,这样会很方便
origin = ListNode(0)
origin.next = head
head = origin

# A|BCDF|RG : 如果这么截取,那么A是0.0,B是0.1,F是1.0,R是1.1
i = 1
while i < m:
head = head.next
i += 1
place0_0 = head
place0_1 = head.next
while i < n + 1:
head = head.next
i += 1
place1_0 = head
place1_1 = head.next

# 翻转后拼接头尾
self.reverse(place0_1, n - m)
place0_0.next = place1_0
place0_1.next = place1_1
# 删除一开始加入的头
return origin.next

def reverse(self, head, count):
"""
翻转count个节点
:param head: 翻转开始点
:param count: 要翻转的节点的个数
"""
if head is None or head.next is None or count == 0:
return head
count -= 1
self.reverse(head.next, count)
head.next.next = head
head.next = None
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: