链表两两交换
递归大法好啊,遇事不决多画图,准没毛病。
- 把需要交换的两个节点的第一个节点传入递归
- 判断其自身是否为空(节点数偶数)、其下一节点是否为空(节点数奇数),任何一个为空都没有交换的意义。
- 接下来就是简单的交换了,把需要返回的节点返回即可。
class Solution {
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) return head;
ListNode second = head.next;
ListNode third = second.next;
second.next = head;
head.next = swapPairs(third);
return second;
}
}
本文作者:bokerr
本文链接:https://www.cnblogs.com/bokers/p/15591130.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步