35 lines
458 B
Go
35 lines
458 B
Go
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--
|
|
}
|
|
}
|