zoukankan      html  css  js  c++  java
  • 微软面试题: LeetCode 138. 复制带随机指针的链表 出现次数:3

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 class Solution {
     5 public:
     6     Node* copyRandomList(Node* head)
     7     {
     8     //第一步:遍历原链表生成新链表,同时用哈希表 memo 存储原链表和新链表对应节点之间的映射关系;
     9     //第二步:再次遍历原链表,根据原链表每个节点的随机指针和memo,在维护新链表的随机指针;
    10         if(head == NULL)
    11         {
    12             return NULL;
    13         }
    14         unordered_map<Node*,Node*> memo;//原节点--> 对应的新生成节
    15         Node* copy_head = new Node(head->val);
    16         memo[head] = copy_head;
    17         Node* front_ptr = copy_head;
    18         Node* work_ptr = head->next;
    19         while (work_ptr != NULL)
    20         {
    21             Node* tmp_ptr = new Node(work_ptr->val);
    22             front_ptr->next = tmp_ptr;
    23             front_ptr = tmp_ptr;
    24             memo[work_ptr] =  tmp_ptr;
    25             work_ptr = work_ptr->next;
    26         }
    27         work_ptr = head;
    28         while (work_ptr != NULL)
    29         {
    30             if(work_ptr->random != NULL)
    31             {
    32                 memo[work_ptr]->random = memo[work_ptr->random]; 
    33             }
    34             work_ptr = work_ptr->next;
    35         }
    36         return copy_head;
    37     }
    38 };
  • 相关阅读:
    HDU4611+数学
    HDU4612+Tarjan缩点+BFS求树的直径
    HDU4602+推导公式
    HDU4607+BFS
    HDU1353+贪心
    HDU4545+LCS
    HDU4548+素数
    HDU4539+状态压缩DP
    HDU2110+母函数
    HDU1569+最大点权集
  • 原文地址:https://www.cnblogs.com/wangxf2019/p/14605352.html
Copyright © 2011-2022 走看看