【编程题】链表中环的入口(java实现)
题目来源
剑指offer
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=13&tqId=11208&rp=4&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
题目解答
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
if(pHead==null)
return pHead;
ListNode quickNode=pHead;
ListNode slowNode=pHead;
while(quickNode!=null&&slowNode!=null){
slowNode=slowNode.next;
quickNode=quickNode.next;
if(quickNode!=null){
quickNode=quickNode.next;
}
if(slowNode==quickNode)
break;
}
slowNode=pHead;
while(quickNode!=null&&slowNode!=null){
if(slowNode==quickNode)
return slowNode;
slowNode=slowNode.next;
quickNode=quickNode.next;
}
return null;
}
}
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
if(pHead==null)
return pHead;
Set<ListNode>set=new HashSet<>();
while(pHead!=null){
if(set.contains(pHead))
return pHead;
else
set.add(pHead);
pHead=pHead.next;
}
return null;
}
}