연결 리스트 주기
3022 단어 javaleetcodealgorithms
목적:
연결된 목록의 헤드인 head가 주어지면 연결된 목록에 순환이 있는지 확인합니다.
다음 포인터를 계속 따라가면 다시 도달할 수 있는 노드가 목록에 있으면 연결 목록에 순환이 있습니다. 내부적으로 pos는 tail의 다음 포인터가 연결된 노드의 인덱스를 나타내는 데 사용됩니다. pos는 매개변수로 전달되지 않습니다.
연결된 목록에 순환이 있으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
패턴: 두 포인터 기술
접근하다:
빅오 표기법:
시간 복잡도: O(n)
각 요소에 대해 n번 반복합니다.
공간 복잡도: O(1)
우리는 저장을 위해 추가 데이터 구조를 사용하지 않습니다.
암호:
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null){
return false;
}
ListNode slow = head;
ListNode fast = head;
while(fast != null && fast.next != null){
slow = slow.next;
fast = fast.next.next;
if(slow == fast){
return true;
}
}
return false;
}
}
Reference
이 문제에 관하여(연결 리스트 주기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tammyvocs/linked-list-cycle-5fl8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)