mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-06 09:23:19 +08:00
Use a concise solution for problem 24 swap nodes in pairs
Signed-off-by: Hanlin Shi <shihanlin9@gmail.com>
This commit is contained in:
@ -16,30 +16,9 @@ type ListNode = structures.ListNode
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
func swapPairs(head *ListNode) *ListNode {
|
func swapPairs(head *ListNode) *ListNode {
|
||||||
if head == nil || head.Next == nil {
|
dummy := &ListNode{Next: head}
|
||||||
return 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
|
return dummy.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
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user