Given a one-way list, reverse the list from the m-N position

## Idea 1: Break the linked list into two parts.

Find the starting point of the inversion, make a new list, and then connect the inversion to the old list.

## Idea 1: code implementation

``````var reverseBetween = function(head, left, right) {
let ret = new ListNode(-1,head); // Create a new list, the next node is head,
let pre = ret;
let cnt = right - left + 1; // The number of lists to be reversed
while (--left) {
pre = pre.next; // Find the starting node of the position to be reversed.
}
pre.next = reverse(pre.next, cnt); // Reverse the linked list
return ret.next; // return the list. The next digit is the original list starting from head. The first digit is the virtual head
};
let pre = null;
while (n--) {
[cur.next, pre, cur] = [pre, cur, cur.next]; // Reverse linked list 1, pointer swap position method, swap node position
}
head.next = cur; // join lists
return pre; // Return the entire list reversed
}
Copy the code``````