连接
在141的基础上进行改进,先要判断链表是否有环,然后可以发现规律
package CLinkedList;
import AarrayProblem.Problem704;
public class Problem142 {
public ListNode detectCycle(ListNode head) {
ListNode meet = hasCycle(head);
ListNode temp = head;
if(meet!=null){
meet=meet.next;
while(temp!=meet){
temp=temp.next;
meet=meet.next;
}
return temp;
}
return null;
}
public ListNode hasCycle(ListNode head){
if(head == null || head.next == null) return null;
ListNode slow = head;
ListNode quick = head;
while(quick.next!=null&&quick.next.next!=null){
if(quick==slow) return quick;
quick=quick.next.next;
slow=slow.next;
}
return null;
}
public static void main(String[] args) {
ListNode head = new ListNode(3);
ListNode B = new ListNode(2);
ListNode C = new ListNode(0);
ListNode D = new ListNode(-4);
head.next=B;
B.next=C;
C.next=D;
D.next=B;
Problem142 problem142 = new Problem142();
problem142.detectCycle(head);
}
}