美文网首页
23.链表中环的入口节点

23.链表中环的入口节点

作者: ___Qian___ | 来源:发表于2019-03-15 09:27 被阅读0次

题目

一个链表中包含环,请找出该链表的环的入口节点。

思路

1.先判断链表中是否包含环 (快慢指针)
node1,node2指向头结点,node1每次向前移动1步,node2每次向前移动2步,若出现node1==node2,则有环,若node2==null,则无环
2.若链表中存在环,寻找环的入口节点
在1基础上,node2保持不动,node1指向头结点,然后node1和node2同时向前移动1步,当node1==node2时,则为环的入口节点(画图容易理解)

public class Solution {
    ListNode EntryNodeOfLoop(ListNode pHead){
        if(pHead == null || pHead.next == null)
            return null;
        ListNode p1 = pHead;
        ListNode p2 = pHead;
        while(p2 != null && p2.next != null ){
           //快慢走
            p1 = p1.next;   
            p2 = p2.next.next;
            if(p1 == p2){      //相遇
                //有环
                p2 = pHead;      //指向链表头结点
                while(p1 != p2){
                    //同时走
                    p1 = p1.next;
                    p2 = p2.next;
                }
                if(p1 == p2)      //相遇
                   //环的入口点
                    return p1;
            }
        }
        return null;
    }
}

相关文章

  • 23.链表中环的入口节点

    题目 一个链表中包含环,请找出该链表的环的入口节点。 思路 1.先判断链表中是否包含环 (快慢指针)node1,n...

  • 链表中环的入口节点

    题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 首先是判断链表中是否有...

  • 链表中环的入口节点

    给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解法1: 新建一个HashSet,遍历...

  • 链表中环的入口节点

    题目描述 一个链表中包含环,请找出该链表的环的入口结点。 解法一: 要想知道环的入口节点,则必须至少经过该节点两次...

  • 链表中环的入口节点

    题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 第一想法 通过指针地址是否出...

  • 链表中环的入口节点

  • 链表中环的入口节点

    《剑指offer》面试题23:链表中环的入口节点 题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则...

  • 链表中环的入口节点

    题目:如果一个链表中包含环,如何找出环的入口节点? 解决这个问题的第一步是如何确定一个链表中包含环。定义两个指针,...

  • 《剑指Offer》-23.链表中环的入口节点

    题干 如果一个链表中包含环,如何找出环的入口节点?例如,在如图所示的链表中,环的入口节点是节点3。 解题思路 第一...

  • 剑指 offer:55、链表中环的入口节点

    55. 链表中环的入口节点 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 ...

网友评论

      本文标题:23.链表中环的入口节点

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