주제 설명 :
목록을 감안할 때, 체인 링의 시작으로 첫 번째 노드를 반환합니다. 비순환 체인 경우, NULL이 반환된다. (NA의 여분의 공간)
해결 방법 :
플로이드 알고리즘
속도 손가락 반지의 목록이 있는지 알아 1..
찾을 2. 만남 노드 step.1 입구 링을 식별합니다.
step.2 증거 난 그냥 문제의 해결지도를 leetcode을 훔치는 것
AC 코드 :
클래스 솔루션 { 공개 : ListNode * fisrtM (ListNode * 헤드) { ListNode * 느린; ListNode * 빠른; 느린 = 빠른 = 머리; 동안 (빨리! = NULL) { 둔화 = 슬로우> 다음을; 경우 (faster-> 다음 == NULL) 반환 NULL; 빠른 = faster->하는 next-> 다음; 경우 (느린 == 빨리가) 반환 느린; } 반환없는; } ListNode * detectCycle (ListNode * 헤드) { 경우 (헤드 == NULL) 복귀 NULL; ListNode * FM = fisrtM (헤드); 경우 (FM == NULL) 반환 NULL; ListNode * ANS = 헤드; 동안 (ANS =! FM) { ANS = ans-> 다음; FM = FM-> 다음; } 반환 ANS를; } };