使用随机指针复制列表

时间:2019-11-07 11:23:50

标签: javascript data-structures

我正在用leetcode练习这个问题。

问题要我创建

给出了一个链表,使得每个节点都包含一个附加的随机指针,该指针可以指向列表中的任何节点或为空。

返回列表的深层副本。

,并带有以下注意事项:

  

您必须返回给定头部的副本,以作为对   克隆列表。

我无法理解我们需要从函数中返回什么,或者到底是什么问题要我们去做。

问题链接:https://leetcode.com/problems/copy-list-with-random-pointer/

有人可以帮助我理解这个问题吗?

图片供参考

enter image description here

1 个答案:

答案 0 :(得分:0)

对于每个测试用例,都有一个由以下类型的Node对象组成的链接列表

// Definition for a Node.
function Node(val,next,random) {
   this.val = val;
   this.next = next;
   this.random = random;
};

您的函数将接收到链表的头节点作为输入,并且您需要克隆该链表并返回克隆的链表的头节点。该示例图显示了具有两个节点的链表-头节点的val为1,其下一个及其随机指针均指向第二个节点,第二个节点的val为2,next为null ,并随机指向自己。因此对于该示例,您将需要创建两个新节点,这些节点复制原始链表中两个节点的属性值和关系,并返回新的头节点。

可能令人困惑的是,挑战说明和“运行代码结果”输出都显示了完整链表的序列化版本-一方面,这可以使您更轻松地查看链表中的实际情况,函数将的头节点作为输入,并跟踪返回头节点的克隆列表中的任何问题,但另一方面,函数的实际输入和输出将各自为节点,而不是序列化的链表的版本。