反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 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:
return head
if m==n:
return head
stack=[]
while head:
stack.append(head.val)
head=head.next
dummy=ListNode(0)
first=dummy
stack[m-1:n]=reversed(stack[m-1:n])
while stack:
first.next=ListNode(stack.pop(0))
first=first.next
return dummy.next
执行用时: 52 ms, 在Reverse Linked List II的Python3提交中击败了41.73% 的用户