题解 | #反转链表#

反转链表

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
};
全部评论

相关推荐

迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
04-25 18:13
五邑大学 Java
无面如何呢:用心包装一下自己的实习
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务