美文网首页
141. 环形链表

141. 环形链表

作者: Jason_Shu | 来源:发表于2019-02-26 15:38 被阅读0次

题目链接:https://leetcode-cn.com/problems/linked-list-cycle/

思路:可能初学者想不到这个方法,就是用「快慢指针」,快指针每次走2步,慢指针每次走1步,如果链表有环必然两者会相遇。打个比方,A和B在同一个环形操场中同一方向跑步,A比B快,一开始A远远超过B,过了一段时间由于A跑的比B快了一圈,然后两者再次相遇。

注意要考虑极端情况,没有节点或者只有一个节点是不存在「环」的。

var hasCycle = function(head) {
    let fast = head;
    let slow = head;
    
    while(slow !== null && fast !== null && fast.next !== null) {
// 注意判断条件,slow !== null && fast !== null确保链表有节点,
// fast.next !== null确保至少有1个节点
        slow = slow.next;
        fast = fast.next.next;
        if(slow === fast) {
            return true;
        }
    }
    
    return false;
    
};

相关文章

网友评论

      本文标题:141. 环形链表

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