Back to Leetcode Go

24. Swap Nodes in Pairs

website/content.en/ChapterFour/0001~0099/0024.Swap-Nodes-in-Pairs.md

1.7.971021 B
Original Source

24. Swap Nodes in Pairs

Problem

Given a linked list, swap every two adjacent nodes and return its head.

You may not modify the values in the list's nodes, only nodes itself may be changed.

Example:


Given 1->2->3->4, you should return the list as 2->1->4->3.

Problem Summary

Swap adjacent elements in pairs in the linked list.

Solution Approach

Just follow the problem statement.

Code

go

package leetcode

import (
	"github.com/halfrost/leetcode-go/structures"
)

// ListNode define
type ListNode = structures.ListNode

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */

func swapPairs(head *ListNode) *ListNode {
	dummy := &ListNode{Next: head}
	for pt := dummy; pt != nil && pt.Next != nil && pt.Next.Next != nil; {
		pt, pt.Next, pt.Next.Next, pt.Next.Next.Next = pt.Next, pt.Next.Next, pt.Next.Next.Next, pt.Next
	}
	return dummy.Next
}