diff --git a/pkg/reorder_list/main.go b/pkg/reorder_list/main.go new file mode 100644 index 0000000..3000b68 --- /dev/null +++ b/pkg/reorder_list/main.go @@ -0,0 +1,34 @@ +package reorderlist + +type ListNode struct { + Val int + Next *ListNode +} + +func ReorderList(head *ListNode) { + nodes := []*ListNode{} + for head != nil { + nodes = append(nodes, head) + head = head.Next + } + + start := 0 + end := len(nodes) - 1 + for { + if start == end { + nodes[start].Next = nil + return + } + + nodes[start].Next = nodes[end] + start++ + + if start == end { + nodes[end].Next = nil + return + } + + nodes[end].Next = nodes[start] + end-- + } +}