- 题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
- 思路:前哨节点 + 双指针。
- 代码
class Solution {
func swapPairs(_ head: ListNode?) -> ListNode? {
let dummyHead = ListNode(0)
dummyHead.next = head
var temp: ListNode? = dummyHead
while temp?.next != nil && temp?.next?.next != nil {
let node1 = temp?.next
let node2 = temp?.next?.next
temp?.next = node2
node1?.next = node2?.next
node2?.next = node1
temp = node1
}
return dummyHead.next
}
}