关于leetcode两两交换节点的问题
var swapPairs = function(head) {
if(head == null || head.next == null){
return head;
}
// 获得第 2 个节点
let next = head.next;
// next.next = head.next.next
// 第1个节点指向第 3 个节点,并从第3个节点开始递归
head.next = swapPairs(next.next);
// 第2个节点指向第 1 个节点
next.next = head;
// 或者 [head.next,next.next] = [swapPairs(next.next),head]
return next;
};
作者:Alexer-660
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/24-liang-liang-jiao-huan-lian-biao-zhong-de-jie--7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
// 第1个节点指向第 3 个节点,并从第3个节点开始递归
head.next = swapPairs(next.next);
其中这一行看不明白,这里的第3个节点是head.next还是next.next啊。。
// 第2个节点指向第 1 个节点
next.next = head;
而且这边的next.next是第二个节点吧。。怎么和上面的next.next对不上啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从结果往上看比较好理解:
首先交换两个结点,那么返回的就是后面结点
所以返回next没有问题
然后要把前面的结点接到后面的结点
所以
最后,再拼接上 后面结果的交换结果