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

复杂链表的复制

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

相关推荐

05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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