leetcode-24 两两交换链表中的节点


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

难度: 中等




和链表反转类似,都有三个指针,分别指向前后和当前节点。不同点是两两交换后,移动节点步长为2

此题还可使用递归思路来求解


视频讲解:

[LeetCode] 24. 两两交换链表中的节点(Swap Nodes in Pairs)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* Definition for singly-linked list.

* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func swapPairs(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}

prev, cur := head, head

head = cur.Next

for ; cur != nil && cur.Next != nil; cur = cur.Next {
next := cur.Next

if prev != nil {
prev.Next = next
}

cur.Next, next.Next, prev = next.Next, cur, cur

}

return head

}

三道题套路解决递归问题

文章目录