题目描述: alt

alt 题解: 这道题我们用的头插法,就是在规定区间内不断的把后一个节点放在前面,一个循环下来,就完成了翻转。而new ListNode(-1)是因为区间是从头开始,需要获取头的前一个节点,因此此代码表示插入一个新的头。

代码展示:

function reverseBetween( head ,  m ,  n ) {
    // write code here
    if(m === n) {
        return head;
    }
    if(head == null || head.next ==null) {
        return head;
    }
    var res = new ListNode(-1);
    res.next = head;
    var cur = res;
     for(var i = 0; i < m-1; i++) {
        cur = cur.next
    }
    var temp = cur.next; //设temp指针
    
//     使用头插法进行翻转
    for(var i = 0; i < n-m; i++) {

        var next = temp.next;
        temp.next = next.next;
        next.next = cur.next;
        cur.next = next;
    }
    return res.next
    
}
module.exports = {
    reverseBetween : reverseBetween
};