题目:
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
思路:1.快慢指针,一个一步,一个两步,一个一步一个多步的话会错过
2.如果相遇带环(如果快的遇到null就不带环)
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
ListNode fast=head;
ListNode slow=head;
do{
if(fast==null){
return null;
}
fast=fast.next;
slow=slow.next;
}while(fast!=slow);
ListNode p=head;
ListNode q=slow;
while(p!=q){
p=p.next;
q=q.next;
}
return p;
}
}