0
点赞
收藏
分享

微信扫一扫

力扣142.环形链表II(JavaScript)

伊人幽梦 2022-01-31 阅读 106

1,判断链表有环

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。

2,寻找环的入口

在相遇节点处,定义一个指针index1,在头结点处定一个指针index2。让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。

var detectCycle = function(head) {
    //判断是否有环
    //定义快慢指针
    let s=k=head
    //如果链表不为空,且k的next不为空
    while(k && k.next){
        s=s.next  //慢指针走一步
        k=k.next.next   //快指针走两步
        //如果相遇,则开始寻找入口
        if(s==k){
            let index1=head
            let index2=s
            while(index1!==index2){
                index1=index1.next
                index2=index2.next
            }
            return index1
        }
    }
    return null
};

 

举报

相关推荐

0 条评论