力扣链接:
https://leetcode-cn.com/probl...
- 新建一个虚拟节点,指向head
- 本题没什么特殊的算法,就是模拟
- 模拟分为三个步骤:(0)保存当前节点的下一个节点和第三个节点,因为第二个节点会直接更改,但是这两个需要保存下(1)虚拟头节点指向转换前头节点的下一个节点(2)转后节点的下一个节点等于记录的当前节点的下一个节点 (3)第三个节点为之前记录的第三个节点
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
// 模拟法
func swapPairs(head *ListNode) *ListNode {
dummyHead := &ListNode{}
dummyHead.Next = head
cur := dummyHead
for cur.Next != nil && cur.Next.Next != nil {
tmp := cur.Next
tmp1 := cur.Next.Next.Next
cur.Next = cur.Next.Next
cur.Next.Next = tmp
cur.Next.Next.Next = tmp1
cur = cur.Next.Next
}
return dummyHead.Next
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。