剑指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)

全部评论

相关推荐

AAA不喝拿铁:校友好,开投就完事了!要准备面试的话更建议刷codetop,hot100有些题并不是面试常考题。另外想看刷题路线的可以看我的帖子,有讲怎么刷leetcode,除此之外可以看看我根据真实面经整理得到的最全(高/中/低频)面试题,加油
点赞 评论 收藏
分享
learYuan:🐕看了都摇头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务