[TO 92. 反转链表II]
/*
- 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
*/
二、解法一
let reverseBetween = function(head, m, n) {
function ListNode(val,next) {
this.val=val||0;
this.next=next||null
}
let pre=null,cur=head
for (let i=1;i<m;i++) pre=cur,cur=cur.next
let pre2=pre, cur2=cur
for (let i=m;i<=n;i++) [cur.next,pre,cur]=[pre,cur,cur.next]
if (pre2!==null) pre2.next=pre
else head=pre
cur2.next=cur
return head
};