diff --git a/go/odd-even-linked-list.go b/go/odd-even-linked-list.go new file mode 100644 index 0000000..5d408ed --- /dev/null +++ b/go/odd-even-linked-list.go @@ -0,0 +1,17 @@ +package main + +func oddEvenList(head *ListNode) *ListNode { + dummies := []ListNode{ListNode{Val: 0, Next: nil}, ListNode{Val: 0, Next: nil}} + tails := []*ListNode{&dummies[0], &dummies[1]} + + for idx := 0; head != nil; idx++ { + tails[idx%2].Next = head + tails[idx%2] = head + + head = head.Next + } + + tails[0].Next = dummies[1].Next + tails[1].Next = nil + return dummies[0].Next +}