leetcode 24 - 两两交换链表中的节点(递归解法)


题目

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

题解

整个过程都是不停地交换节点,因此可以尝试通过递归来解决。

递归解法要先搞清以下三个内容

  1. 返回值
  2. 调用单元做了什么
  3. 终止条件

在本题中:

  1. 返回值:交换完成的子链表head
  2. 调用单元做了什么:设需要交换的两个点为 head 和 next,head 连接后面交换完成的子链表,next 连接 head,完成交换
  3. 终止条件:head为空指针或者next为空指针,也就是当前无节点或者只有一个节点,无法进行交换
ListNode* swapPairs(ListNode* head) {
    if (head == NULL || head->next == NULL) {
        return head;
    }
    
    ListNode *next = head->next;
    head->next = swapPairs(next->next);
    next->next = head;
    return next;
}

参考

画解算法:24. 两两交换链表中的节点

发表地址

博客园:leetcode 24 - 两两交换链表中的节点(递归解法)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM