美文网首页
利用快慢指针查看链表是否有闭环

利用快慢指针查看链表是否有闭环

作者: 梁森的简书 | 来源:发表于2021-02-01 23:44 被阅读0次

创建两个指针分别指向头节点,快指针每次移动两位,慢指针每次移动一位,如果快慢指针能相遇则说明链表有闭环。

/// 快慢指针解决链表是否有闭环
    private func testCircle() {
        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
        
        eightNode.next = fifthNode
        
        let isCir = isCircle(firstNode: firstNode)
        print("isCircle:\(isCir)")
    }
    
    private func isCircle(firstNode: Node) -> Bool {
        var fast = firstNode
        var slow = firstNode
        while fast.next?.next != nil {
            fast = fast.next!.next!
            slow = slow.next!
            if fast.item == slow.item { // 应该是比较节点是否相同
                return true
            }
        }
        return false
    }

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

相关文章

  • 利用快慢指针查看链表是否有闭环

    创建两个指针分别指向头节点,快指针每次移动两位,慢指针每次移动一位,如果快慢指针能相遇则说明链表有闭环。 demo...

  • 快慢指针的应用

    什么是快慢指针:快慢指针是链表操作中的常用操作,最经典的应用是判断单链表中是否有环。 判断单链表是否存在环 两个指...

  • 算法学习--双指针

    双指针分类 快慢指针 左右指针 快慢指针:主要解决链表相关问题,比如:典型的判断链表中是否包含环、链表倒是第K个节...

  • 利用快慢指针获取链表闭环的入口

    创建两个指针分别指向头节点,同时创建一个临时空指针,当快慢指针相遇的时候(有闭环),将临时空指针指向头节点,同时继...

  • 链表 - 检测环 & 环入口点

    对于链表检测是否有环,大家都知道 使用快慢指针就可以了。只要快慢指针可以相遇,那么链表一定是有环的。 一般我们都是...

  • 其余代码题

    链表是否有环-done 表达式计算-done 括号匹配-done 最长有效括号长度 链表是否有环 提示:快慢指针 ...

  • java判断链表是否有环(两种方式实现)

    判断链表是否为带环链表 方法一、快慢指针移动判断 首先如何判断链表是否有环,这个时候首先需要知道链表是否为空,如果...

  • 热题 HOT 100(1-10)

    环形链表 1.给定一个链表,判断链表中是否有环。 将快指针的移动速度设置为慢指针的两倍,将快慢指针同时遍历链表,若...

  • 检测链表中的循环

    给定一个链表,检查链表是否有循环。下图显示了带有循环的链表。 解题思路 使用快慢两个指针遍历链表。将慢指针(slo...

  • 链表是否有环-快慢指针

网友评论

      本文标题:利用快慢指针查看链表是否有闭环

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