问题描述
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
代码
var reverseBetween = function(head, m, n) {
let pre = null ;
let curr = head ;
let next = head ;
for ( let i=1 ; i<m ; i++ ){
pre = curr ;
curr = curr.next;
}
let pre1 = pre ;
let curr1 = curr ;
for(let i=m ; i<=n ; i++ ){
next = curr.next ;
curr.next = pre ;
pre = curr ;
curr = next;
}
if ( pre1 != null ){
pre1.next = pre ;
}else{
head = pre ;
}
curr1.next = curr ;
return head;
};