【Leetcode】138. Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.

1 题意要求复制这个特殊链表

2 一个节点一个节点地处理:包括node.val, node.next, node.random

3 copy一个带有random pointer list最大的问题是,有可能这个指向的node还没有被copy到,

4 旧的node做为key,新的node是value

5 要注意head为空时的corner case


1 第一个红框,因为你在后面copy的时候,curr.next curr.random有可能是None,所以需要先赋值一下

2 第二个红框,因为dic[curr].next 和dic[curr].random也必须是dic中的value,而不是key,这样才能连接起来

3 三刷:只需要用一个cur指向head就行了,然后一个一个copy,不需要建立什么dummy head


注意lambda函数的表达方式

因为dic的value默认是一个Node,所以我们在copy的时候不需要建立新的Node了,只需要去更新其val, next 和random就行了

1 注意用一个cur指针,因为后边返回结果的时候有用到head,所以需要保存head,但在遍历的时候直接用cur就可以了

2 dictionary中的key直接用node就行,不需要用node.val,这样在实际操作中更方便


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容