反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
第一次的代码:
首先找到m的位置,以及n的位置,用列表c储存m到n区间的值,然后再将c区间的值反向添加到链表中。
l1=l2=l3=ListNode(-1)
l1.next=head
c=[]
for i in range(n):
l2=l2.next
if i<m-1: #l1停留到交换点前一个点
l1=l1.next
else:
c.append(l2.val)#储存m到n的点
for j in range(len(c)-1,-1,-1):
l1.next=ListNode(c[j]) #反向添加到链表
l1=l1.next
l1.next=l2.next #结尾不变
return l3.next
28ms,排名54%