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

复杂链表的复制

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

相关推荐

03-11 18:00
辽宁大学 安卓
这怎么还花钱买上了.....
不愿吃饼的变色龙很感性:没事,我不是目标院校,练花钱的机会都没有
点赞 评论 收藏
分享
北斗导航Compass低仿版:学历一般 没实习 非科班,肯定很难过初筛了,先找个中小厂好好干吧,拿这段实习去投大厂实习
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务