LeetCode之024两两交换链表中的节点(相关话题:链表递归迭代)

题目描述

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

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

示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:

输入:head = []
输出:[]
示例 3:

输入:head = [1]
输出:[1]
 

提示:

链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100

解题思路

方法一:递归

swapPairs的含义是把head和head.next互换位置,返回互换位置后的头节点。关键是连接两次递归间的节点,比较容易被忽视

head.next = swapPairs(newHead.next);

class Solution {
    public ListNode swapPairs(ListNode head) {
        ...
        ListNode newHead = head.next;
        head.next = swapPairs(newHead.next);
        ...

        return newHead;
    }
}

方法二:迭代

创建哑结点 dummyHead,令 dummyHead.next = head。令 temp 表示当前到达的节点ÿ

你可能感兴趣的:(算法,力扣)