和查找是否包含环形链表思路没区别,一致next去检测,当遍历过的部分包含即将要遍历的部分就说名有环形链表,而第一个出现的就是环形链表的入口:
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
ListNode checkNode = new ListNode(0);
ListNode end = checkNode;
ListNode root = pHead;
while(root != null){
ListNode temp = root;
root = root.next;
temp.next = null;
end.next = temp;
end = temp;
if(checkContains(checkNode,root)){
return root;
}
}
return null;
}
boolean checkContains(ListNode toCheck,ListNode item){
while(toCheck != null){
if(toCheck.equals(item)){
return true;
}
toCheck = toCheck.next;
}
return false;
}}



京公网安备 11010502036488号