zoukankan      html  css  js  c++  java
  • 138. Copy List with Random Pointer (Graph, Map; DFS)

    A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

    Return a deep copy of the list.

     
     
    struct RandomListNode {
         int label;
         RandomListNode *next, *random;
         RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
     };
    
    class Solution {
    public:
        RandomListNode *copyRandomList(RandomListNode *head) {
            if(!head) return NULL;
            map<RandomListNode *, RandomListNode *> flag;
            RandomListNode *root = copyNode(head, flag);
            return root;
        }
    
        RandomListNode * copyNode(RandomListNode *source, map<RandomListNode *, RandomListNode *> &flag)
        {
            if(flag.find(source)!=flag.end()) 
            {
                return flag[source];
            }
    
            RandomListNode *target = new RandomListNode (source->label);
            flag[source]=target;
            if(source->next)
                target->next = copyNode (source->next,flag);
            if(source->random)
                target->random = copyNode (source->random,flag);
            return target;
        }
    };
  • 相关阅读:
    变量数据类型
    c#变量小例子:模拟用户登入
    防盗监控系统小程序端
    java入门学习
    JAVA字符串处理函数汇总
    Freemarker学习
    监听器(Listener)
    正则表达式
    过滤器(Filter)
    HTML百宝箱(1从0开始)
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4854707.html
Copyright © 2011-2022 走看看