思路:链表中有环,则遍历链表环的入口节点会再次遍历到,并且是第一个再次遍历到的,所以将遍历结果保存,第一次遇到已经存在的节点就输出;ps:考虑节点个数为0和为1的情况
代码如下:
import java.util.HashMap;
/*
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 null;
}
if(pHead.next == null){
return null;
}
HashMap<ListNode,Integer> hm = new HashMap<ListNode,Integer>();
ListNode temp = pHead;
while(true){
if(hm.get(temp) != null){
return temp;
}else{
hm.put(temp,1);
temp = temp.next;
}
}
}
}
end