剑指 Offer II 029. 排序的循环链表


func insert(_ head: Node?, _ insertVal: Int) -> Node? {
        
        if head == nil {
            let node = Node(insertVal)
            node.next = node
            return node
        }
        var tempHead = head
        while  tempHead?.next !== head {
            
            let tempValue = tempHead?.val ?? 0
            let tempNextValue = tempHead?.next?.val ?? 0

             //到达临界点
            if tempValue > tempNextValue {
                
                //大于最大值或者小于最小值
                if tempValue < insertVal || insertVal < tempNextValue {
                    break
                }
            }
            
            //满足条件的插入点
            if (tempValue <= insertVal) && (insertVal <= tempNextValue) {
                break
            }
            tempHead = tempHead?.next
        }
        
        let insertNode = Node(insertVal)
        insertNode.next = tempHead?.next
        tempHead?.next = insertNode
        
        return head
    
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容