00:00
来,别说话,看屏幕。今天我们看这个第35题,复杂链表的复制。那它这个复杂是因为它这个链表中包含了两个指针。一个指针是指向下一个节点,另一个指针呢?是任意节点的一个连接。要声考呗。参考贝,也就是说当前的节点和数据我们都要完全的复制一份。那因此我们的思路。可以用三个步骤来解决,首先在当前节点扩充第二节点。之后。拷贝他所指向的一个任意节点,这样我们两个指针都有了。最后我们做一个第三步的。两个链表分离。来开始说一下。他给了一个。链表头,我们返回一个链表头。首先要保证它这个列表是存在的。他如果为空的话。
01:07
咋会闹?不为空的话。扩充节点。记录一下当前这个投节点。保证这个在循环中。他是一直有着的。不等于no。在这个前提下,我们不断的向后别离。
02:07
现在需要创建一个节点。他创建的值就是这个。当前。第一个节点就是。它成为了第二个节点。现在我们要让。第二个节点的下一个指向是当前头节点的之前的下一个节点指向。
03:02
再让当前节点的下一个节点。也就是。指向的我们刚刚创建的这个节点。然后不断的向后推进。也就是说。当前节点。应该等于。刚才计算出来的这个节点的下一个节点。我已经扩充完节点,现在要做的是。进行。任意。指真的。Co。Random。指针。
04:00
这时候我们再重新把这个头节点。复制一份。因为刚才那个已经被改变了。现在继续保证这个current节点是为空的。在这个前提下。我们要把。当下节点的一个任意指针。拷贝到第二个节点上。那也就是说。先记录一下他这个第二个节点。这样已经记录下了一个节点。
05:03
那我们的。他的这个。任意指向指针是。当前节点。他的。任意节点。的下一个节点。然后我们再依次向右移动。也就是说。第一个节点等于第二节点的下一个节点。OK,我们再做一下。两个链表的分离。依旧是拷贝一下这个当前的这个current。把头借点给他。最需要保证的是,这个当前节点的下一个节点不会空。
06:12
现在呢?调出分离。他一步一步向后推进。那也就是说,要让第一个节点指向。第二个节点的下一个节点。这时候我们先记录一下他这个。它是它第二个节点是不为空的,那我们先把它第二个节点先记录出来。然后现在我们要将第一个节点的下一个节点。指向第二个节点的下一个节点。然后我们不断的把这个。
07:01
Current向后移位。就可以了。只有我们返回的是。他这个。你需要在外面记录一下。记录一下什么,记录一下这个。头节点的下一个节点。也就是我们。拷贝出来的这个。返回值。所以最后返回的就是这个。克隆帅的头节点。提交一下。看出现了一个控制帧情况。呃,也就是说在这个第二层这个。不断咱们执行拷贝的时候,要加一层条件判断,它不会空的时候,我们再往里面不断的拷贝。然后提交一下。
我来说两句