美文网首页Javascript in LeetCode
leetCode (js):141. 环形链表

leetCode (js):141. 环形链表

作者: i7eo | 来源:发表于2018-11-26 11:08 被阅读0次

    给定一个链表,判断链表中是否有环。(不使用额外空间)

    示例:a-b-c-b

    1、快慢指针

    var hasCycle = function(head) {
        if(!head || !head.next) {
            return false;
        }
        var fast = head.next,
            slow = head;
        while(fast && fast.next) {
            if(fast === slow) {
                return true;
            }
            fast = fast.next.next;
            slow = slow.next;
        }
        return false;
    };
    

    2、判断值

    var hasCycle = function(head) {
        while (head) {
            if (head.val == null) {
                return true;
            }
            head.val = null;
            head = head.next;
        }
        return false;
    };
    

          现在来分析一下在js中这种带环的链表数据结构。因为只有一个next的原因,这个环只能出现在尾部或者是循环链表。下面我们创建一个带环的链表:

    1-2-3-2

    let c1 = {'val': 1, 'next': null},
        c2 = {'val': 2, 'next': null},
        c3 = {'val': 3, 'next': null};
    
    c1.next = c2;
    c2.next = c3;
    c3.next = c2;
    
    Screen Shot 2018-11-26 at 11.06.26 AM.png

    结果很明显3232会一直显示,符合预期。

    相关文章

      网友评论

        本文标题:leetCode (js):141. 环形链表

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