【力扣LeetCode】java算法刷题大全第8题之环形链表

【力扣LeetCode】java算法刷题大全第8题之环形链表,第1张

一、给定一个链表,判断链表中是否有环
 /**
     * 当存在环形的条件下,快慢指针形成了一个龟兔赛跑的模型,如果两个指针指向了
     * 同一个元素,说明存在环形,返回true
     * 解法一:快慢双指针
     *
     * @param head
     * @return
     */
    public boolean hasCycle(ListNode head) {
        if (head == null) return false;
        ListNode slowPtr = head, fastPtr = head;
        while (fastPtr.next != null && fastPtr.next.next != null) {
            slowPtr = slowPtr.next;
            fastPtr = fastPtr.next;
            if (slowPtr == fastPtr) {
                return true;
            }
        }
        return false;
    }
二、给定一个链表,返回链表开始入环的第一个节点,如果链表无环,则返回null
/**
     * 当存在环形的条件下,快慢指针形成了一个龟兔赛跑的模型,如果两个指针指向了
     *  同一个元素,说明存在环形,跳出第一个while循环,将慢指针重新指向head,
     *  快慢指针都变为移动一个元素,当快慢指针再次相遇,说明找到了入环的开始节点
     * @param head
     * @return

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/792693.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存