这道题自己由于不了解链表的结构,因此不知道怎么做。看了官方的三种解答方法,虽然看懂了,但是无奈自己不会写代码。看了别人C++代码自己复现了一下。不得不说,大佬们的思维是真的优秀。
本题用到两种方法。
法一:用了map,记录下来新副节点的映射,map[cur]的值就是当前节点cur对应的副节点,map[cur]->next指针就是副本节点的next指针,其值就是map[cur->next]的值(即当前节点next指针所指节点的副本),random指针同理
法一图解
法二:在原节点后面建立副本节点,之后在遍历原链表,得到副本节点的random指针,最后断开新副节点的连接,分别恢复为两个链表。
题目
code
法二图解