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 };
  • 相关阅读:
    利用合成数据进行时间序列分类的数据扩充方法
    基于 KubeSphere CI/CD 将 Spring Boot 项目发布至 Kubernetes
    矩阵白化
    delphi 过滤开头 结尾 全部 空格的函数
    delphi CopyFileProgressBar 拷贝文件显示进度条
    delphi 分享三个随机字符串
    delphi IsIPAdress 非正则表达式验证IP的方法
    delphi PosAnsi
    delphi公用函数
    Delphi中break,exit,abort跳出循环的比较
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6938555.html
Copyright © 2011-2022 走看看