用数组记录 然后重新修改next
func reorderList(_ head: ListNode?) {
var tempHead = head
var array = Array<ListNode>()
while tempHead != nil {
if let node = tempHead {
array.append(node)
}
tempHead = tempHead?.next
}
let len = array.count
if len == 1 {
return
}
let times = len / 2 + len % 2
var tempNode : ListNode? = nil
for i in 0..<times {
if tempNode == nil {
array[i].next = array[len - i - 1]
tempNode = array[len - i - 1]
}
else
{
tempNode?.next = array[i]
array[i].next = array[len - i - 1]
array[len - i - 1].next = nil
tempNode = array[len - i - 1]
}
}
}
网友评论