两种解法搞定 Swap Nodes in Pairs 算法题
最近还是很喜欢用 golang 来刷算法题,更接近通用算法,也没有像动态脚本语言那些语法糖,真正靠实力去解决问题。下面这道题很有趣,也是一道链表题目,具体如下:
复制代码
快速思考了一下,想到这个交换节点的事儿可以用递归去实现,通过三个指针 prev, current, next 不断移动,实现相邻节点交换,代码如下:
复制代码
递归虽然好,但是也会有一些性能上的担忧,毕竟递归调用太深,可能会引发堆栈溢出。后面再仔细推敲了一下,完全可以用 2 个指针不断进行交换,可以不用递归。这里还是要用一个 dump 节点来方便的保存修改后的链表,具体如下:
复制代码
最终它们的时间复杂度是 O(N),空间复杂度 O(1),都非常棒。如果是你,你更喜欢哪种解法呢?欢迎在评论区留言交流。
文章转载自:freephp
评论