剑指offer35

剑指offer35:复制复杂链表
public Node copyRandomList(Node head) {
        if(head==null){
            return null;
        }

        HashMap<Node,Node> map=new HashMap<>();
        Node cur=head;
        while(cur!=null){
            map.put(cur,new Node(cur.val));
            cur=cur.next;
        }

         cur=head;
         while(cur!=null){
             map.get(cur).next=map.get(cur.next);
             map.get(cur).random=map.get(cur.random);
             cur=cur.next;
         }

         return map.get(head);
        
    }
题解:通过哈希表,进行二次遍历
当第一次遍历时,将链表中的对象放入到map中生成副本
然后进行第二次遍历,将原先的对象的next指针域赋给副本的对象
将原先的对象的random域赋给副本的random域
这就完成了复杂连边的复制
时间复杂度:O(n)
空间复杂度:O(n)

全部评论

相关推荐

冰皮月饼_FLORRIEEE:你是准备投产品嘛?可以重新整理一下实习的bulletpoint,侧重描述你的工作所带来的结果收益,不要只写泛泛的内容(比如改写通过xx数据分析,提升xx),产品的价值并不在处理和分析数据的过程
点赞 评论 收藏
分享
01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务