zoukankan      html  css  js  c++  java
  • 剑指offer之【复杂链表的复制】

    题目:

      复杂链表的复制

    链接:

      https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=11178&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

    题目描述:

      输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

    思路:

      第一遍用next指针把链表复制,并建立一个map表存放对应的地址

      第二遍用random指针链接地址

      这种方法不是最优,最优的方法可见剑指offer书籍

    代码:  

      

     1 /*
     2 struct RandomListNode {
     3     int label;
     4     struct RandomListNode *next, *random;
     5     RandomListNode(int x) :
     6             label(x), next(NULL), random(NULL) {
     7     }
     8 };
     9 */
    10 class Solution{
    11 public:
    12     RandomListNode* Clone(RandomListNode* pHead){
    13         if(pHead == nullptr)
    14               return pHead;
    15         RandomListNode* res = new RandomListNode(0);
    16         RandomListNode* rnode = res;        //复制的链表指针
    17         RandomListNode* pnode = pHead;        //原来的链表指针
    18         while(pnode != nullptr){
    19             RandomListNode* temp = new RandomListNode(pnode->label);
    20             book[pnode] = temp;            // 建立图表
    21             rnode->next = temp;
    22             rnode = rnode->next;
    23             pnode=pnode->next;
    24         }
    25         pnode = pHead;
    26         rnode = res->next;
    27         while(pnode != nullptr){
    28             rnode->random = book[pnode->random];
    29             rnode = rnode->next;
    30             pnode = pnode->next;
    31         }
    32         return res->next;
    33     }
    34 private:
    35     map<RandomListNode*,RandomListNode*> book;
    36 };
  • 相关阅读:
    2019.6.20刷题统计
    36 线程 队列 守护线程 互斥锁 死锁 可重入锁 信号量
    35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型
    34 进程 pid ppid 并发与并行,阻塞与非阻塞 join函数 process对象 孤儿进程与僵尸进程
    33 udp 域名 进程
    32 粘包 文件传输
    31 socket客户端. 服务器 异常 语法
    30 网络编程
    29 元类 异常
    26 封装 反射 常用内置函数
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6938555.html
Copyright © 2011-2022 走看看