返回介绍

25.复杂链表的复制

发布于 2023-08-30 21:54:39 字数 868 浏览 0 评论 0 收藏 0

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

思路:将链表存入map中,以便之后寻找映射关系。

import java.util.HashMap;
public class Solution {
  public RandomListNode Clone(RandomListNode pHead)
  {
    if(pHead == null) return null;
    RandomListNode head1 = pHead; //记录pHead的头节点
    HashMap<RandomListNode, RandomListNode> map = new HashMap<>();
    while(pHead != null){
      map.put(pHead, new RandomListNode(pHead.label));
      pHead = pHead.next;
    }
    RandomListNode result = new RandomListNode(head1.label);
    RandomListNode head2 = result;//记录result的头节点
    while(head1 != null){
      result.next = map.get(head1.next);
      result.random = map.get(head1.random);
      result = result.next;
      head1 = head1.next;
    }
    return head2;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文