美文网首页
剑指 Offer II 026. 重排链表

剑指 Offer II 026. 重排链表

作者: 邦_ | 来源:发表于2022-04-21 08:57 被阅读0次

用数组记录 然后重新修改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]

            }
        }
        
        
        
    }







相关文章

网友评论

      本文标题:剑指 Offer II 026. 重排链表

      本文链接:https://www.haomeiwen.com/subject/atuqertx.html