주기 LinkedList 감지 - II

3512 단어 leetcodejavascript
우리는 2 단계 프로세스가 있습니다
1) 주기가 존재하는지 확인합니까?
2) 존재하는 경우 해당 노드를 가져옵니다.

var detectCycle = function(head) {
    let meetingNode = getMeetingNode(head);

    if(meetingNode !== null){
        let start = head;
        let cycleAt = meetingNode;

        while(start != meetingNode){
            start = start.next;
            meetingNode= meetingNode.next;
        }
        return start;
    }
    return meetingNode;

};
var getMeetingNode = function(head) {
    let slow = head;
    let fast =  head;
    while(fast !== null && fast.next !== null){
        slow = slow?.next;
        fast = fast?.next?.next;

         if(slow == fast){
            return slow;
        }
    }
    return null;
};

좋은 웹페이지 즐겨찾기