题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function ReverseList(pHead)
{
//分为已反转和待反转两个表,pre式已反转链表第一个节点,cur是待反转链表第一个节点,next用来保存cur.next,以免cur.next指向改变后找不到原来的next
//时间复杂度O(n)
//考虑链表为空的情况
if(!pHead){
return null
}
//初始化
let pre = null;
let next = pHead.next;
let cur = pHead;
while(cur){
//起到保存变量的作用,以防访问不到cur.next
next = cur.next;
//此前pre还是已反转链表的第一个节点,此操作后变成已反转链表的第二个节点
cur.next = pre;
//待反转第一个指针指向已反转第一个指针
pre = cur;
//待反转指针移动
cur = next;
}
return pre
}
module.exports = {
ReverseList : ReverseList
};
查看16道真题和解析

凡岛公司福利 263人发布