关于golang:Leetcode专题链表24两两交换链表中的节点

力扣链接:
https://leetcode-cn.com/probl…

  1. 新建一个虚构节点,指向head
  2. 本题没什么非凡的算法,就是模仿
  3. 模仿分为三个步骤:(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
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理