leetcode24-两两交换链表中的节点

原题

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

解法

思想

递归,自底向上

终止点:
1. head为null,返回null
2. head的next为null,代表此时是倒数第一个元素(链表节点是奇数个),直接返回head

否则,直接交换当前节点和下一个节点,下一个节点的next使用swapPairs()计算

代码

class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head==null) return null;
        if(head.next == null) return head;
        ListNode next = head.next;
        head.next = swapPairs(next.next);
        next.next = head;
        return next;
    }
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode24-%e4%b8%a4%e4%b8%a4%e4%ba%a4%e6%8d%a2%e9%93%be%e8%a1%a8%e4%b8%ad%e7%9a%84%e8%8a%82%e7%82%b9/