题目描述:
题解:
这道题我们用的头插法,就是在规定区间内不断的把后一个节点放在前面,一个循环下来,就完成了翻转。而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
};