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

题目描述

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

输入输出

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

基本思路

按照代码逻辑写递归 很好理解 也可以用迭代减少空间复杂度

java实现

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode newHead = head.next;
ListNode rest = head.next.next;
newHead.next = head;
head.next = swapPairs(rest);
return newHead;
}
}