Javascript in LeetCode

leetCode (js):141. 环形链表

2018-11-26  本文已影响0人  i7eo

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

示例: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会一直显示,符合预期。

上一篇下一篇

猜你喜欢

热点阅读