利用快慢指针获取链表的中间值
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!
}