题目描述:输入某个链表的表头,输出反转后的链表头
题目难度:⭐⭐

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
//时间复杂度O(n),空间复杂度O(1)
function ReverseList(pHead)
 
{
    //保存当前结点
    let cur=pHead;
    if(cur==null||cur.next==null) return cur;
    let prev=null;   //前一个结点
    let next=null;   //下一个结点
    while(cur){
        next=cur.next;  //保存下一个结点
        cur.next=prev;   //当前结点的下一个结点指向前面的节点
        prev=cur;        //把所有节点往后挪
        cur=next;
    }
    return prev;
}
/**------------------------------**/
//时间复杂度O(n),空间复杂度O(n)
function ReverseList(pHead)
{
    //把链表存到数组中
    let node = pHead;
    let ary = [];
    while(node){
        ary.push(node.val)
        node=node.next  //指向下一个结点
    }
    node = pHead
    while(node){
        node.val = ary.pop()
        node=node.next
    }
    return pHead
}

鹿角包
175 声望8 粉丝

不苦程序媛