leetcode35 复杂链表的复制

    技术2022-08-01  72

    输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

    //这道题的思路: 1.首先在每一个结点之后复制一个相同值的新节点 2.然后复制每一个结点的随机指针; 3.最后将两个链表一分为二;

    public Node copyRandomList(Node head){ if(head==null) return null; //1.复制新的结点 Node cur=head; while(cur!=null){ Node copyNode=new Node(cur.val); copyNode.next=cur.next; cur.next=copyNode; cur=cur.next.next; } //2.复制某个结点的随机指针; cur=head; while(cur!=null){ if(cur.random!=null){ cur.next.random=cur.random.next; } } Node copyHead=head.next; cur=head; curCopy=head.next; while(cur!=null){ if(cur.next!=null){ cur.next=cur.next.next; cur=cur.next; } if(copyNode.next!=null){ curCopy.next=curCopy.next.next; curCopy=curCopy.next; } } return copyHead; }
    Processed: 0.013, SQL: 9