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 };
  • 相关阅读:
    《jmeter:菜鸟入门到进阶系列》
    Jmeter下载时Binaries和Source两类包的区别
    MySQL5.7 四种日志文件
    Windows下配置nginx+php(wnmp)
    回望2018,计划2019
    C# 单元测试(入门)
    C# 中out,ref,params参数的使用
    C# 程序运行中的流程控制
    Nacos(五):多环境下如何“读取”Nacos中相应的配置
    Nacos(四):SpringCloud项目中接入Nacos作为配置中心
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6938555.html
Copyright © 2011-2022 走看看