题解 | #复杂链表的复制#

复杂链表的复制

http://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba

!注意区分引用操作和实体操作

// public class RandomListNode {
//     int label;
//     RandomListNode next = null;
//     RandomListNode random = null;

//     RandomListNode(int label) {
//         this.label = label;
//     }
//     RandomListNode(){}
// }

public class Solution {
    //先实例化一个头
    static RandomListNode result=new RandomListNode(1);
    
    public RandomListNode Clone(RandomListNode pHead) {
        if(pHead==null){
            return null;
        }
        fun(pHead,result);
        return result;
    }
    public void fun(RandomListNode pHead,RandomListNode res){
        //pHead指向待复制节点,res指向当前空间
        
        //复制节点值
        if(pHead!=null) {
            res.label = pHead.label;
        }
        //建立random节点并复制
        if(pHead.random!=null) {
            res.random = new RandomListNode(pHead.random.label);
        }
        //建立并复制下一个节点,并将待处理指针指向下一个节点
        if(pHead.next!=null){
            res.next=new RandomListNode(pHead.next.label);
            res=res.next;
            pHead=pHead.next;
            fun(pHead,res);
        }
    }
}

全部评论
这个做法不对,random每次都新建节点,但是实际上random指向的应该是之间新建的某个next节点。
点赞 回复 分享
发布于 2022-02-28 15:11

相关推荐

不愿透露姓名的神秘牛友
07-16 12:18
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务