24.两两交换链表中的节点

我的解法

一:三个指针,po1指向po2的前驱,po2和po3分别指向两个待交换节点,然后修改next。时间上很好,但是消耗内存很大。
二:新建一个链表,直接在后面追加节点。其实和上面的方法极其类似,但是在内存消耗方面小不少。实在没想明白为什么类似的代码会出现0.3MB的差距?
可能是因为法1的条件判断稍微复杂一些?

官方解法

一:递归。我上面的方法用了三指针,是因为交换两个节点需要修改前驱节点的next,递归的方法则是对当前两个节点,先把返回值设置为节点二,然后递归交换剩余节点,返回值即为节点一的next,这样对前驱节点的修改在递归的过程中就完成了。
二:迭代,即我的法一,官方解法里是在while里设置两个变量,比我的方法内存消耗上表现好些。

知识点

递归;迭代

posted @ 2025-02-26 18:59  知白0212  阅读(12)  评论(0)    收藏  举报