/*
* 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
let cur=head
let pre=null
for(let i=1;i<m;i++){
pre=cur
cur=cur.next
}
let oldpre=pre
let oldcur=cur
for(let i=m;i<=n;i++){
let next=cur.next
cur.next=pre
pre=cur
cur=next
}
//特殊情况有指定区间是前几个
if(oldpre!=null){
oldpre.next=pre
}else{
head=pre
}
oldcur.next=cur
return head
}
module.exports = {
reverseBetween : reverseBetween
};