我正在用leetcode练习这个问题。
问题要我创建
给出了一个链表,使得每个节点都包含一个附加的随机指针,该指针可以指向列表中的任何节点或为空。
返回列表的深层副本。
,并带有以下注意事项:
您必须返回给定头部的副本,以作为对 克隆列表。
我无法理解我们需要从函数中返回什么,或者到底是什么问题要我们去做。
问题链接:https://leetcode.com/problems/copy-list-with-random-pointer/
有人可以帮助我理解这个问题吗?
图片供参考
答案 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 ,并随机指向自己。因此对于该示例,您将需要创建两个新节点,这些节点复制原始链表中两个节点的属性值和关系,并返回新的头节点。
可能令人困惑的是,挑战说明和“运行代码结果”输出都显示了完整链表的序列化版本-一方面,这可以使您更轻松地查看链表中的实际情况,函数将的头节点作为输入,并跟踪返回头节点的克隆列表中的任何问题,但另一方面,函数的实际输入和输出将各自为节点,而不是序列化的链表的版本。