From 22e9be3663c0c9469689c14ac0cf93c430bfae9c Mon Sep 17 00:00:00 2001 From: Hanlin Shi Date: Thu, 27 May 2021 09:48:36 -0700 Subject: [PATCH] Use a concise solution for problem 24 swap nodes in pairs Signed-off-by: Hanlin Shi --- .../24. Swap Nodes in Pairs.go | 29 +++---------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/leetcode/0024.Swap-Nodes-in-Pairs/24. Swap Nodes in Pairs.go b/leetcode/0024.Swap-Nodes-in-Pairs/24. Swap Nodes in Pairs.go index 1dc9e41d..ac1e7e09 100644 --- a/leetcode/0024.Swap-Nodes-in-Pairs/24. Swap Nodes in Pairs.go +++ b/leetcode/0024.Swap-Nodes-in-Pairs/24. Swap Nodes in Pairs.go @@ -16,30 +16,9 @@ type ListNode = structures.ListNode */ func swapPairs(head *ListNode) *ListNode { - if head == nil || head.Next == nil { - return head + 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 } - s := head.Next - var behind *ListNode - for head.Next != nil { - headNext := head.Next - if behind != nil && behind.Next != nil { - behind.Next = headNext - } - var next *ListNode - if head.Next.Next != nil { - next = head.Next.Next - } - if head.Next.Next != nil { - head.Next = next - } else { - head.Next = nil - } - headNext.Next = head - behind = head - if head.Next != nil { - head = next - } - } - return s + return dummy.Next }