给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next
指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null
。
解题思路:
用Map存储遍历过的节点,如果发现节点已存在于Map中,说明为环形节点的入口,返回该节点。
public ListNode detectCycle(ListNode head) {
ListNode node=head;
Map<ListNode,Integer> map= new HashMap<ListNode,Integer>();
while (node!=null){
if(map.containsKey(node)){
return node;
}
map.put(node,1);
node=node.next;
}
return null;
}