链表中环的入口结点——牛客剑指offer

题目描述:

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

题目分析:

从上图中可以看出,环的入口结点和其他结点的区别:环的入口结点是有两个指针指向的,其他结点除了头结点都是只有一个指针指向的,

使用断链法,在当前结点访问完毕后,断掉指向当前结点的指针。因此,最后一个被访问的结点一定是入口结点。

代码实现:

 1 /*
 2 public class ListNode {
 3    int val;
 4    ListNode next = null;
 5 
 6    ListNode(int val) {
 7        this.val = val;
 8    }
 9 }
10 */
11 public class circle {
12     public ListNode EntryNodeOfLoop(ListNode pHead)
13     {
14         ListNode newHead=pHead;
15         ListNode preNode=newHead;
16         ListNode walkNode=newHead.next;
17         if (preNode == null || preNode.next == null){
18            return null;
19         }
20         while(walkNode!=null){
21             preNode.next=null;
22             preNode=walkNode;
23             walkNode=walkNode.next;
24         }
25         System.out.println(pHead.next);
26         System.out.println(preNode);
27         return preNode;
28     }
29 }
原文地址:https://www.cnblogs.com/darlinFly/p/9335380.html