/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
function reverseBetween(head, m, n) {
// write code here
//m等于n 不需要翻转
if (m === n) {
return head;
}
//链表为空或链表长度为1不需要翻转
if (head == null || head.next == null) {
return head;
}
//定义一个新表头指向head 头插法!
// let newHead = new ListNode(-1);
let newHead = new ListNode(-1)
newHead.next = head
let pre = newHead;
for(i=1;i<m;i++){
pre = pre.next
}
let p1 = pre.next
let p2
for(i=m;i<n;i++){
p2 = p1.next
p1.next = p2.next
p2.next = pre.next
pre.next = p2
}
return newHead.next
//先遍历找到m的位置,
}
module.exports = {
reverseBetween: reverseBetween,
};