美文网首页
面试题23(剑指offer)--链表中环的入口节点

面试题23(剑指offer)--链表中环的入口节点

作者: Tiramisu_b630 | 来源:发表于2019-08-17 19:25 被阅读0次

    题目:

    给一个链表,若其中包含环,请找出该链表的环的入口结点。

    思路:

    �链表中环的入口节点

    1. 先确定有环,用快慢指针,记录多少步,快指针追上慢指针,步数即为环的长度
    2. 第一个指针先走环的长度,然后第一和第二个指针一起走,相遇点就是入口节点

    代码:

        public static ListNode inNode(ListNode node){
            ListNode slowNode=null;
            ListNode fastNode=null;
            ListNode frontNode=node;
            ListNode postNode=node;
            if (node.next!=null){
                slowNode=node.next;
            }else {
                return null;
            }
            if (slowNode.next!=null){
                fastNode=slowNode.next;
            }else {
                return null;
            }
            int count=1;
            while (fastNode!=slowNode){
                if (fastNode.next==null){
                    return null;
                }else {
                    fastNode = fastNode.next.next;
                    slowNode=slowNode.next;
                    count++;
                }
            }
            for (int i = 0; i < count; i++) {
                frontNode=frontNode.next;
            }
            while (frontNode!=postNode){
                frontNode=frontNode.next;
                postNode=postNode.next;
            }
    
            return frontNode;
        }
    

    相关文章

      网友评论

          本文标题:面试题23(剑指offer)--链表中环的入口节点

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