iOS、Swift

利用快慢指针获取链表的中间值

2021-01-31  本文已影响0人  梁森的简书

创建两个指针分别指向头节点,快指针每次移动两位,慢指针每次移动一位,当快指针移动到最后一位的时候,慢指针指向的位置就是链表的中间位置

/// 快慢指针解决中间值
    private func testMid() {
        let firstNode = Node(item: "1", next: nil)
        let secondNode = Node(item: "2", next: nil)
        let thirdNode = Node(item: "3", next: nil)
        let forthNode = Node(item: "4", next: nil)
        let fifthNode = Node(item: "5", next: nil)
        let sixthNode = Node(item: "6", next: nil)
        let seventhNode = Node(item: "7", next: nil)
        let eightNode = Node(item: "8", next: nil)
        
        firstNode.next = secondNode
        secondNode.next = thirdNode
        thirdNode.next = forthNode
        forthNode.next = fifthNode
        fifthNode.next = sixthNode
        sixthNode.next = seventhNode
        seventhNode.next = eightNode
        
        let mind = getMind(firstNode: firstNode)
        print("\(mind)")
    }
    
    private func getMind(firstNode: Node) -> String{
        var fast = firstNode
        var low = firstNode
        while fast.next?.next != nil {
            fast = fast.next!.next!
            low = low.next!
        }
        return low.item!
    }

dmeo地址:https://github.com/yangguanghei/studyDateStructure

上一篇 下一篇

猜你喜欢

热点阅读